题解 | #删除有序链表中重复的元素-II#

删除有序链表中重复的元素-II

https://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024

 * 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) {
        auto dummy = new ListNode(-1);  // 虚拟头结点-1
        dummy->next = head;  // 虚拟头结点next指向head也就是1

        auto p = dummy;  // 存下虚拟头结点-1
        while(p->next) {
            auto q = p->next->next;
            while(q && q->val == p->next->val) {  // 两个指针相互比较如果是相同就指向下一个看看还有没有相同如果没有就结束,如果还有相同就继续找
                q = q->next;  // 看下一个
                
            }
            
            if (p->next->next == q) p = p->next;  // 下一段只有一个数
            else p->next = q;  // 否则说明下一段多于一个数,然后删除
        }
        return dummy->next;
    }
};
#删除有序链表中重复的元素-II#
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-27 10:21
点赞 评论 收藏
分享
Java抽象带篮子:实习经历包装一下,可以看看我的包装贴
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务