LeetCode Day66 remove-duplicates-from-sorted-list-ii

由于头节点的值可能也会重复,所以新建一个空节点指向头.
每次定义一个now指针和front指针,now指针指向现在已知非重复的节点,front指针从now指针下一个开始判断下一个是不是存在重复,若重复,一直向前.若front位置改变了,则now->next赋值为front->next,但是now不用动(把中间重复的部分去掉了);否则,now正常向前进.

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

猜你喜欢

转载自blog.csdn.net/weixin_41394379/article/details/85995364