详细思路

leftright,left是已经好了,right是需要判断,相等right++,不相等left连上去,++  ++;
 
画图

 

 

class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        if(!head||!head->next)return head;
        ListNode*left=head;
        ListNode*right=left->next;
        while(right){
            while(right->next&&right->val==left->val)right=right->next;
            if(!right->next){
                if(right->val==left->val){
                    left->next=nullptr;
                    return head;
                }
                else{
                    left->next=right;
                    return head;
                }
            }
            if(right){
                left->next=right;
                left=right;
                right=right->next;
            }
        }
        return head;
    }
};
踩过的坑
链表题代码不重要,必须画图,最重要的是处理好如何结束,就是找到一个地方插入if  return  else  return
           if(!right->next){
                if(right->val==left->val){
                    left->next=nullptr;
                    return head;
                }
                else{
                    left->next=right;
                    return head;
                }
            }
posted on 2021-07-30 22:37  offer快到碗里来~  阅读(41)  评论(0)    收藏  举报