82. Remove Duplicates from Sorted List II

来源:互联网 发布:淘宝采购指数 编辑:程序博客网 时间:2024/05/21 23:00
/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */ //8ms ac //分两部分,重复包括首节点 //以及后部分重复的,考虑一下节点的释放class Solution {public:    ListNode* deleteDuplicates(ListNode* head) {        ListNode* head0=head;        int m;        int flag=false;        while(head0&&head0->next&&head0->val==head0->next->val)        {            m=head0->val;            while(head0&&head0->val==m)            {                head0=head->next;                delete head;                head=head0;            }        }        if(!head) return NULL;        if(!head->next) return head;        ListNode* parent=head;        while(head0)        {            if(head0->next&&head0->val==head0->next->val)            {                m=head0->val;                  while(head0&&head0->val==m)                {                    parent->next=head0->next;                    delete head0;                    head0=parent->next;                }             }            else             {                parent=head0;                head0=head0->next;            }        }        return head;    }};
0 0
原创粉丝点击