剑指offer——20删除链表中重复的结点
Posted zzw1024
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer——20删除链表中重复的结点相关的知识,希望对你有一定的参考价值。
题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
题解:
这道题没什么讲的,注意指向空的边界就行,新建一个头节点更容易处理。
1 class Solution { 2 public: 3 ListNode* deleteDuplication(ListNode* pHead) { 4 if (pHead == nullptr || pHead->next == nullptr)return pHead; 5 ListNode *newHead = new ListNode(0); 6 newHead->next = pHead; 7 ListNode *pre = newHead, *p = newHead->next; 8 int sameNum = 0; 9 while (p!= nullptr && p->next != nullptr) 10 { 11 if (p->val == p->next->val) 12 { 13 sameNum = p->val; 14 while (pre->next != nullptr && pre->next->val == sameNum) 15 pre->next = pre->next->next; 16 p = pre->next; 17 } 18 else 19 { 20 pre = p; 21 p = p->next; 22 } 23 } 24 return newHead->next; 25 } 26 };
以上是关于剑指offer——20删除链表中重复的结点的主要内容,如果未能解决你的问题,请参考以下文章