zoukankan      html  css  js  c++  java
  • 剑指offer-删除链表中重复的节点

    题目描述

     
    在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
     

    解题思路

    定义preNode指向当前结点pNode的前一个节点,每次访问pNode时首先判断它与后面节点是否重复,若重复则置bool型变量needDel为true。不需要删除时preNode和pNode分别指向下一个节点;需要删除时,首先保存pNode指向的结点值,依次向后遍历并删除每一个重复节点,直到找到第一个不重复的节点用pNext指向它。然后判断preNode是否为NULL,若为空说明当前重复节点是从首节点开始的,则直接把头指针pHead指向pNext;若不为空,则用preNode的next指针指向pNext。最后把当前结点pNode指向pNext即可。

    代码

     1 /*
     2 struct ListNode {
     3     int val;
     4     struct ListNode *next;
     5     ListNode(int x) :
     6         val(x), next(NULL) {
     7     }
     8 };
     9 */
    10 class Solution {
    11 public:
    12     ListNode* deleteDuplication(ListNode* pHead)
    13     {
    14         ListNode* preNode = NULL;
    15         ListNode* pNode = pHead;
    16         while(pNode){
    17             ListNode* pNext = pNode->next;
    18             bool needDel = false;
    19             if(pNext&&pNext->val == pNode->val)
    20                 needDel = true;
    21             if(!needDel){
    22                 preNode = pNode;
    23                 pNode = pNode->next;
    24             }
    25             else{
    26                 int val = pNode->val;
    27                 ListNode* pDel = pNode;
    28                 while(pDel&&pDel->val == val){
    29                     pNext = pDel->next;
    30                     delete pDel;
    31                     pDel = pNext;
    32                 }
    33                 if(preNode == NULL)
    34                     pHead = pNext;
    35                 else
    36                     preNode->next = pNext;
    37                 pNode = pNext;
    38             }
    39         }
    40         return pHead;
    41     }
    42 };
  • 相关阅读:
    网页信息抓取 Jsoup的不足之处 httpunit
    spring boot @ConfigurationProperties
    git冲突解决方案 Intellij IDEA
    HTTP 和 Socket 区别
    java.lang.reflect.Method
    dubbo hessian+dubbo协议
    4、注解反射生成SQL语句
    3、解析注解
    2、自定义注解
    1、JDK自带注解
  • 原文地址:https://www.cnblogs.com/wmx24/p/8727025.html
Copyright © 2011-2022 走看看