新建立一个链表result,用来保存结果。在遍历链表过程中,利用额外变量count,判断当前值是否唯一。唯一则加入到result中。
需要同时更新pre和cur指针。
/**
* @author johnsondu
* @time 11:11 12th Oct 2015
* @type remove nodes from list
* @status Accepted
* @problem Remove Duplicates from Sorted List II
* @url https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/
*/
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if(head == NULL) return head;
ListNode* result = new ListNode(0);
ListNode* frt = result;
ListNode* pre = head;
ListNode* cur = head->next;
int val = pre->val;
while(1) {
int count = 1;
while(cur != NULL && val == cur->val) {
count ++;
cur = cur->next;
}
if(count == 1) {
result->next = pre;
result = result->next;
}
if(cur == NULL) {
result->next = cur;
break;
}
val = cur->val;
pre = cur;
cur = cur->next;
}
return frt->next;
}
};