https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/description/
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
示例 1:
输入: 1->2->3->3->4->4->5
输出: 1->2->5
示例 2:
输入: 1->1->1->2->3
输出: 2->3
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if (head == NULL || head->next == NULL) {
return head;
}
ListNode* Head = new ListNode(-1);
Head->next = head;
ListNode* cur = head;
ListNode* prev = Head;
ListNode* next = cur->next;
while (cur) {
if (next == NULL) {
prev->next = cur;
return Head->next;
}
else if (cur->val != next->val) {
prev->next = cur;
prev = cur;
cur = next;
if (next) {
next = cur->next;
}
}
else {
while (cur->val == next->val) {
cur = next;
next = cur->next;
if (next == NULL) {
break;
}
}
cur = next;
if (cur) {
next = cur->next;
}
}
}
prev->next = cur;
return Head->next;
}
};