算法每日一题: 删除排序列表中的重复元素2 | 循环 | 链表的删除 | 虚拟节点

大家好,我是星恒
今天的题目是昨天题目的进化题,他对链表的删除加深了理解。最重要的是学会了对循环中的特殊部分的处理,还有设置虚拟节点的情况
好了,话不多说,我们直接开始

题目:leetcode 82
给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表
示例:
示例 1:
[外链图片转存中…(img-qsrtHDAg-1705333692489)]

输入:head = [1,2,3,3,4,4,5]
输出:[1,2,5]

示例 2:
[外链图片转存中…(img-SIQvpZrX-1705333692490)]

输入:head = [1,1,1,2,3]
输出:[2,3]

提示:

  • 链表中节点数目在范围 [0, 300] 内
  • -100 <= Node.val <= 100
  • 题目数据保证链表已经按升序 排列

分析:
由于我们是要删除,所以我们需要知道删除节点的前一个节点。我们遍历该链表,当遇到当前值的下一个值和下下个值相同时,把他们删除,并记录该值,然后看后面的情况

题解:

class Solution {
   
    public ListNode deleteDuplicates(ListNode head) {
   
        if (head == null) {
   
            return head;
        }
        
        ListNode dummy = new ListNode(0, head);

        ListNode cur = dummy;
        while (cur.next != null && cur.next.next != null) {
   
            if (cur.next.val == cur.next.next.val) {
   
                int x = cur.next.val;
                while (cur.next != null && cur.next.val == x) {
   
                    cur.next = cur.next.next;
                }
            } else {
   
                cur = cur.next;
            }
        }

        return dummy.next;
    }
}

收获/亮点:

  • 虚拟节点的设置:当访问时,访问不到头结点情况时(尤其是使用**.next.next**最容易出现此情况),我们可知设置头结点来访问到头结点
  • 当两个指针出现时,访问结束的条件一般都是两个
  • if 中的循环,一般使用就是在遍历访问时,有一段循环需要特殊的处理,我们可以使用 if - while 来推进一段进程

如果大家有什么思考和问题,可以在评论区讨论,也可以私信我,很乐意为大家效劳。
好啦,今天的每日一题到这里就结束了,如果大家觉得有用,可以可以给我一个小小的赞呢,我们下期再见!

最近更新

  1. TCP协议是安全的吗?

    2024-01-19 11:52:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-19 11:52:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-19 11:52:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-19 11:52:04       18 阅读

热门阅读

  1. Vue中Props将父组件的数据传递给子组件

    2024-01-19 11:52:04       32 阅读
  2. Python封装tvdi算法为exe并读取xml

    2024-01-19 11:52:04       40 阅读
  3. Spring Boot多环境配置

    2024-01-19 11:52:04       32 阅读
  4. 启动YonBIP中间件控制台日志

    2024-01-19 11:52:04       29 阅读
  5. [GN] 使用vue3+vite+ts+prettier+eslint

    2024-01-19 11:52:04       36 阅读
  6. 科普:大语言模型中的量化是什么意思?

    2024-01-19 11:52:04       40 阅读
  7. HTTP 状态码

    2024-01-19 11:52:04       31 阅读