Remove Duplicates from Sorted List II
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
.
Code:
class Solution { public: ListNode *deleteDuplicates(ListNode *head) { if(head==NULL) return head; ListNode *start=new ListNode(0); start->next=head; ListNode *pre=start; ListNode *cur=head; ListNode *nex=head->next; bool detect=false; while(nex){ if(nex->val==cur->val){ detect=true; cur->next=nex->next; delete nex; } else if(detect){ detect=false; pre->next=cur->next; delete cur; cur=nex; } else{ pre=cur; cur=nex; } nex=nex->next; } if(detect){ pre->next=NULL; delete cur; } head=start->next; delete start; return head; } };