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;
    }
};

 

posted @ 2013-11-05 17:47  WinsCoder  阅读(143)  评论(0编辑  收藏  举报