Leetcode 082删除排序链表中重复元素II

地址

https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/submissions/

描述

在这里插入图片描述

思想

在这里插入图片描述

代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
    
    
public:
    ListNode* deleteDuplicates(ListNode* head) {
    
    
        ListNode *dummy=new ListNode(-1);
        dummy->next=head;
        //p指针指向一段字符的前一个位置
        ListNode *p=dummy;
        //假如p后面有下一段
        while(p->next){
    
    
            //看下一段的第二个数
            ListNode *q=p->next->next;
            //假如q非空,且第二个数与第一个数相同,说明重复
            while(q&&q->val==p->next->val) q=q->next;
            //说明p指针没有动,说明没有重复
            if(p->next->next==q) p=p->next;
            else p->next=q;
        }
        return dummy->next;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_52934831/article/details/121742775