82. Remove Duplicates from Sorted List II

来源:互联网 发布:重庆理工大学网络教育 编辑:程序博客网 时间:2024/05/29 13:44

题目:

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.

class Solution {
public:
    ListNode *deleteDuplicates(ListNode *head) {
       if(head==NULL||head->next==NULL)  return head;
        ListNode *t=new ListNode(-1);
        ListNode *p=t;
        while(head){
            if(head->next&&head->val==head->next->val){
                ListNode *temp=head->next;
                while(temp->next&&temp->val==temp->next->val)
                    temp=temp->next;
                head=temp;
                p->next=temp->next;
            }
            else{
                p->next=head;
                p=p->next;
            }
            head=head->next;
        }
        return t->next;
    }
};

原创粉丝点击