链表82. 删除排序链表中的重复元素 II

Posted ocpc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链表82. 删除排序链表中的重复元素 II相关的知识,希望对你有一定的参考价值。

题目:

给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。

示例 1:

输入: 1->2->3->3->4->4->5
输出: 1->2->5
示例 2:

输入: 1->1->1->2->3
输出: 2->3

 

解答:

 

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 class Solution {
10 public:
11     ListNode* deleteDuplicates(ListNode* head) 
12     {
13         ListNode dummy(0);
14         dummy.next = head;
15         ListNode *pre = &dummy;
16         ListNode *cur = head;
17         while(cur)
18         {
19             int i = cur->val;
20             if(cur->next && cur->next->val == i)
21             {
22                 while(cur && cur->val == i)
23                 {
24                     pre->next = cur->next;
25                     delete cur;
26                     cur = pre->next;
27                 }
28                 cur = pre;
29             }
30             pre = cur;
31             cur = cur->next;
32         }
33         return dummy.next;
34     }
35 };

 

以上是关于链表82. 删除排序链表中的重复元素 II的主要内容,如果未能解决你的问题,请参考以下文章

迭代LeetCode 82. 删除排序链表中的重复元素 II

Leetcode 82. 删除排序链表中的重复元素 II

Leetcode 82. 删除排序链表中的重复元素 II

LeetCode 82. 删除排序链表中的重复元素 II

链表82. 删除排序链表中的重复元素 II

「LeetCode」82. 删除排序链表中的重复元素 II