前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 82:删除排序链表中的重复元素 II

LeetCode 82:删除排序链表中的重复元素 II

作者头像
五分钟学算法
发布2023-01-10 09:03:03
4200
发布2023-01-10 09:03:03
举报
文章被收录于专栏:五分钟学算法五分钟学算法

一、题目描述

给定一个已排序的链表的头 head删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表

二、题目解析

一边遍历、一边统计相邻节点的值是否相等,如果值相等就继续后移找到值不等的位置,然后删除值相等的这个区间。

具体操作如下:

1、设置一个虚拟节点,将虚拟头节点和原链表头节点连接起来

2、从虚拟头节点位置开始访问

3、只要当前访问节点的下一个节点与下下个节点都存在,就继续访问下去

4、在访问过程中,如果下一个节点与下下个节点相同,那么说明与这个节点值相同的所有节点都应该被删除掉。

5、 删除的方法是先记录这个值,利用 while 循环,不断的查找出那些相同的节点值来,每次找到了一个相同的值,那么当前访问的节点 cur 就越过这个节点。

6、在访问过程中,下一个节点与下下个节点不相同,说明 cur 可以加入到最终的结果链表中,那么继续访问后面的节点。

三、参考代码

代码语言:javascript
复制
// 登录 AlgoMooc 官网获取更多算法图解
// https://www.algomooc.com
// 作者:程序员吴师兄
// 代码有看不懂的地方一定要私聊咨询吴师兄呀
//  删除排序链表中的重复元素 II:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/submissions/
class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        // 一开始设置一个虚拟节点,它的值为 -1,它的值可以设置为任何的数,因为我们根本不需要使用它的值
        ListNode dummy = new ListNode(-1);

        // 将虚拟头节点和原链表头节点连接起来
        // 添加虚拟头节点之后,原链表的每个节点的地位都是一样的
        dummy.next = head;

        // 从虚拟头节点位置开始访问
        ListNode cur = dummy;

        // 只要当前访问节点的下一个节点与下下个节点都存在,就继续访问下去
        while (cur.next != null && cur.next.next != null) {

            // 在访问过程中,会出现两种情况
            // 1、下一个节点与下下个节点相同,那么说明与这个节点值相同的所有节点都应该被删除掉
            if (cur.next.val == cur.next.next.val) {

                // 删除的方法是先记录这个值
                int value = cur.next.val;

                // 利用 while 循环,不断的查找出那些相同的节点值来
                while (cur.next != null && cur.next.val == value) {

                    // 每次找到了一个相同的值,那么当前访问的节点 cur 就越过这个节点
                    cur.next = cur.next.next;
                }
            
            // 2、下一个节点与下下个节点不相同,说明 cur 可以加入到最终的结果链表中
            } else {

                // 那么继续访问后面的节点
                cur = cur.next;
            }
        }

        // 最终返回虚拟头节点的下一个节点就行了
        return dummy.next;
    }
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-12-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 五分钟学算法 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、题目描述
  • 二、题目解析
  • 三、参考代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档