Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given 1->2->3->3->4->4->5
, return 1->2->5
.
Given 1->1->1->2->3
, return 2->3
.
设定一个标志是否是重复数字的变量isrepeat,当前和后一个一样就将isrepeat置true。 然后将isrepeat的节点删除,留下不重复节点。
ListNode *deleteDuplicates(ListNode *head) { //C++ if(head == NULL || head->next == NULL) return head; ListNode tmphead(0); tmphead.next= head; ListNode* pre = &tmphead; ListNode* tmp = head; bool isRepeat = false; while(tmp->next != NULL) { if(tmp->val == tmp->next->val) { isRepeat = true; } else { if(isRepeat) { isRepeat = false; } else { pre->next = tmp; pre = tmp; } } tmp = tmp->next; } if(!isRepeat) { pre->next = tmp; pre = tmp; } pre->next = NULL; return tmphead.next; }
[leetcode]Remove Duplicates from Sorted List II
原文地址:http://blog.csdn.net/chenlei0630/article/details/41653155