82. 删除排序链表中的重复元素 II

82. 删除排序链表中的重复元素 II


题目链接:82. 删除排序链表中的重复元素 II

代码如下:

class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) 
    {
        ListNode *Head=new ListNode;
        Head->next=head;

        ListNode *p=Head->next,*pre=Head,*post=nullptr;

        while(p)
        {
            if(p->next&&p->val==p->next->val)//找到相同的节点
            {
                post=p;
                while(post->next&&post->val==post->next->val)//把第一个之外的相同节点全部删除
                {
                    ListNode* temp=post->next;
                    post->next=temp->next;
                    delete temp;
                }   
                p=post->next;
                pre->next=p;
                delete post;//删除最开始的相同节点
            }
            else
            {
                pre=p;
                p=p->next;
            } 
        }
        
        head=Head->next;
        delete Head;
        return head;
    }
};

你可能感兴趣的:(leetcode,链表,c++)