• 56、剑指offer--删除链表中重复的结点


    题目描述
    在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
     
    解题思路:从头遍历整个链表,如果当前结点和下一结点值相同,则应当删除。为了保证结点不断,需要保存pre结点,然后找到不相等的next,pre->next = next;注意删除的是头结点的情况,单独处理。
     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         if(pHead == NULL)
    15             return NULL;
    16         ListNode *pPreNode = NULL;
    17         ListNode *pNode = pHead;
    18         while(pNode != NULL)
    19         {
    20             ListNode *pNext = pNode->next;
    21             bool needDelete = false;
    22             if(pNext != NULL && pNext->val == pNode->val)
    23                 needDelete = true;
    24             if(!needDelete)//不等
    25             {
    26                 pPreNode = pNode;
    27                 pNode = pNode->next;
    28             }
    29             else//相等该删除
    30             {
    31                 int value = pNode->val;
    32                 ListNode *pToBeDel = pNode;
    33                 while(pToBeDel != NULL && pToBeDel->val == value)
    34                 {
    35                     pNext = pToBeDel->next;
    36                     delete pToBeDel;
    37                     pToBeDel = NULL;
    38                     pToBeDel = pNext;
    39                 }
    40                 if(pPreNode == NULL)//头结点被删除了
    41                     pHead = pNext;
    42                 else
    43                     pPreNode->next = pNext;
    44                 pNode = pNext;
    45  
    46             }
    47         }
    48         return pHead;
    49     }
    50 };
  • 相关阅读:
    thinkphp 前后端分离
    git常用命令总结
    DIV常用属性大全
    shell编程学习之使用jq对json数据进行提取
    shell编程之if语句
    shell编程之变量赋值
    【总结】sqli-labs Less(1-35) 小结
    【总结】sqlmap常用命令
    【总结】kali(amd64)中安装nessus
    【总结】ettercap工具之DNS劫持
  • 原文地址:https://www.cnblogs.com/qqky/p/7113021.html
Copyright © 2020-2023  润新知