Remove Duplicates from Sorted List II 链表去除重复值

来源:互联网 发布:c语言给数组赋初值 编辑:程序博客网 时间:2024/06/06 15:03

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.

/** * 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 *helper=new ListNode(0);        helper->next=head;                ListNode *cur=head;        ListNode *pre=helper;                while(cur!=NULL)        {            while(cur->next!=NULL&&cur->val==cur->next->val)                cur=cur->next;            if(pre->next==cur)            {                pre=pre->next;            }            else            {                pre->next=cur->next;            }            cur=cur->next;        }        return helper->next;    }};

0 0