首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【手绘漫画】图解LeetCode之删除排序链表中的重复元素进阶版(LeetCode 82题)

【手绘漫画】图解LeetCode之删除排序链表中的重复元素进阶版(LeetCode 82题)

作者头像
我是管小亮
发布于 2020-04-21 06:19:20
发布于 2020-04-21 06:19:20
32400
代码可运行
举报
运行总次数:0
代码可运行
题目

首先看一下题目,

和上次的题做一下对比,【手绘漫画】图解LeetCode之删除排序链表中的重复元素(LeetCode 83题)

嗯,都是删除节点,不过这次要求删除所有的节点,比如 3 重复了,那么所有的 3 都没了~

好了,废话少说,开始了。

3、正文

好了,来一起看一下。

双指针,如果 q 指向的元素与 p 的下一个节点的元素相同,q 接着走,如果下一个还相同,那么说明遇到了重复元素。

如果这段相同的元素,个数多于一个,则整段元素直接删除,否则说明只有一个,没毛病。

4、代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 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) {
        auto dummy=new ListNode(-1);
        dummy->next=head;
        auto p=dummy;
        while(p->next){
            auto q=p->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;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员管小亮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【手绘漫画】图解LeetCode之删除排序链表中的重复元素(LeetCode 83题)
首先看一下题目, 嗯,删除节点,好,只要把下一个节点放在上一个节点的指针上就可以了! 好了,废话少说,开始了。 3、正文 好了,来一起看一下。 从头开始遍历每一个节点。 如果下一个节点的 val 和当
我是管小亮
2020/04/21
3380
【手绘漫画】图解LeetCode之删除排序链表中的重复元素(LeetCode 83题)
【手绘漫画】图解LeetCode之两两交换链表中的节点(LeetCode 24)
1、写在前面 手绘漫画系列正式上线!!!"图解LeetCode刷题计划" 来了!!! 今天是第十九期,争取每天一期,最多两天一期,欢迎大家监督我。。。 2、题目 首先看一下题目, 【手绘漫画】图解逆转
我是管小亮
2020/04/23
2650
【手绘漫画】图解LeetCode之两两交换链表中的节点(LeetCode 24)
(Leetcode 2021 刷题计划) 82. 删除排序链表中的重复元素 II
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。
windism
2021/03/25
2600
删除排序链表中的重复元素(C++)
给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
GeekLiHua
2025/01/21
2250
删除排序链表中的重复元素(C++)
【leetcode刷题】T102-删除排序链表中的重复元素
本题较为简单,遍历链表,判断前后两个节点的val值是否相同,如果相同,修改指针后,删除后一个节点。
木又AI帮
2019/07/17
3960
【leetcode刷题】T102-删除排序链表中的重复元素
leetcode-82. 删除排序链表中的重复元素 II
这道题的目的是删除重复的节点,由于链表的头节点可能会被删除,因此我们需要额外使用一个哑节点(dummy node)指向链表的头节点,定义当前节点并把哑结点指向哑节点,cur.next 与 cur.next.next 不能为空才能进入循环,若 cur.next.val == cur.next.next.val 则说明重复,记录重复的值,用 while 跳过所有与记录的重复值相同的值;若不重复则当前值右移,最后返回 dummy.next 即删除重复值后链表的头节点。
灰太狼学Java
2022/06/17
2090
leetcode-82. 删除排序链表中的重复元素 II
【手绘漫画】图解LeetCode之删除链表的倒数第N个节点(LeetCode 19题)
【手绘漫画】面试必考之手撕单链表(解题模板和深度剖析),(LeetCode 707)
我是管小亮
2020/04/20
2710
C语言每日一题(44)删除排序链表中的重复元素 II
给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。
对编程一片赤诚的小吴
2024/01/23
1780
C语言每日一题(44)删除排序链表中的重复元素 II
【leetcode刷题】20T43-删除排序链表中的重复元素
https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list
木又AI帮
2020/04/24
3460
LeetCode82. 删除排序链表中的重复元素 II(c++详解)
给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。
莫浅子
2022/11/18
4870
LeetCode82. 删除排序链表中的重复元素 II(c++详解)
leetcode链表之删除排序链表中的重复元素
链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list
code4it
2020/09/14
6630
leetcode链表之删除排序链表中的重复元素
【leetcode刷题】T103-从分类列表中删除重复项目 II
使用两个指针pre和cur,pre始终指向链表前一部分非重复元素的最后一个节点,cur指向pre指向的节点后重复元素的最后一个节点。当pre->next == cur时,说明cur->val是唯一元素,不用删除,否则pre->next = cur->next。
木又AI帮
2019/07/17
2.7K0
leetcode-83. 删除排序链表中的重复元素
先对传进来的链表头节点判空,为空则直接返回头节点,非空则对当前节点与下一个节点进行值的判断,若不相等则把当前节点变成下一个节点,若相等则跳过。
灰太狼学Java
2022/06/17
1770
leetcode-83. 删除排序链表中的重复元素
leetcode链表之删除排序链表中的重复元素
链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list
code4it
2020/09/23
6200
【拿捏链表(Ⅱ)】—Leetcode删除排序链表中的重复元素
思路:这里的思路很简单,定义两个指针,一个指向head,一个指向head的后一个节点,然后遍历进行比较即可。不相同就尾插,相等就跳过(这里注意要先判断head是否为空,防止空指针解引用,还有就是tail最后一定要置空(野指针))。如下图:
诺诺的包包
2023/02/20
5740
LeetCode 82,考察你的基本功,在有序链表中删除重复元素II
今天是LeetCode专题的第51篇文章,我们来看LeetCode第82题,删除有序链表中的重复元素II(Remove Duplicates from Sorted List II)。
TechFlow-承志
2020/07/08
7200
LeetCode-83-删除排序链表中的重复元素
初始化1个指针,指向头部,判断后一个数和前一个是不是相等,相等则要把后面一个数覆盖前面一个数,当发现不相等时,cur指针顺移1位,即对于1、1、2、3、3这样的数据,cur会将后一个重复的数字替换前一个重复数字,当重复数字之后一位数不和当前相等时,cur指针改变指向到下一个数,再进行重复判断。
benym
2022/07/14
1610
入门级别的面试题——LeetCode题目19:删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点,题目给定的 n 保证是有效的。你能尝试使用一趟扫描实现吗?
二环宇少
2020/08/13
3200
入门级别的面试题——LeetCode题目19:删除链表的倒数第N个节点
精益求精解LeetCode(82与83)
好久没有刷题与更文了,今天来一场LeetCode上面简单与中等题目多种方法刷题。
公众号guangcity
2019/09/20
7140
LeetCode 82:删除排序链表中的重复元素 II
给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。
五分钟学算法
2023/01/10
6040
LeetCode 82:删除排序链表中的重复元素 II
推荐阅读
相关推荐
【手绘漫画】图解LeetCode之删除排序链表中的重复元素(LeetCode 83题)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验