当前位置: 首页 > news >正文

java练习(27)

ps:练习来自力扣

删除排序链表中的重复元素

给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。

代码来自官方题解

class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        // 首先检查链表是否为空,如果为空,直接返回 head(也就是 null)
        // 因为空链表不存在重复元素,无需进行删除操作
        if (head == null) {
            return head;
        }

        // 定义一个指针 cur,初始时指向链表的头节点 head
        // 后续我们会通过移动 cur 指针来遍历链表
        ListNode cur = head;

        // 使用 while 循环来遍历链表,只要 cur 的下一个节点不为空,就继续循环
        while (cur.next != null) {
            // 比较当前节点 cur 的值和它下一个节点 cur.next 的值
            if (cur.val == cur.next.val) {
                // 如果两个节点的值相等,说明这两个节点是重复的
                // 此时我们将 cur 的 next 指针指向 cur.next 的下一个节点
                // 也就是跳过 cur.next 这个重复节点,相当于删除了它
                cur.next = cur.next.next;
            } else {
                // 如果两个节点的值不相等,说明当前节点和下一个节点不是重复节点
                // 此时将 cur 指针移动到下一个节点,继续往后遍历链表
                cur = cur.next;
            }
        }

        // 当遍历完整个链表后,所有重复的节点都已经被删除
        // 最后返回链表的头节点 head,此时链表中每个元素只出现一次
        return head;
    }
}

相关文章:

  • TCP
  • 【MySQL】第一弹---MySQL 在 Centos 7环境安装
  • 【线段树 二分查找】P3939 数颜色|普及+
  • Windows 下打包labelimg 详细过程总结
  • css之display:grid布局改块级元素布局
  • Java工程师技术栈
  • Go语言实现十大排序算法超细节图片讲解
  • Docker-介绍以及安装docker
  • Docker__持续更新......
  • Java延时定时刷新Redis缓存
  • 什么是掉期(Swap)?——金融衍生品的关键工具(中英双语)
  • Spring Boot Actuator 监控✨
  • 使用DeepSeek+本地知识库,尝试从0到1搭建高度定制化工作流(爬虫模块篇)
  • 钉钉应用开发
  • unity学习42:动画状态机:混合动画状态 blend tree
  • OpenGL ES学习大纲
  • 解锁机器学习核心算法 | K -近邻算法:机器学习的神奇钥匙
  • 在 Visual Studio Code (VSCode) 中创建 React 项目
  • 基于豆瓣2025电影数据可视化分析系统的设计与实现
  • 500. 键盘行 771. 宝石与石头 简单 find接口的使用
  • 西藏普兰县公安局网安大队向自媒体人宣传网络安全知识
  • 武康大楼再开发:一栋楼火还不够,要带火街区“朋友圈”
  • 卿晨璟靓等用服刑经历“引流”,专家:将犯罪问题娱乐化会消解刑罚严肃性
  • 新版城市规划体检评估解读:把城市安全韧性摆在更加突出位置
  • 李强:把做强国内大循环作为推动经济行稳致远的战略之举
  • 科普|男性这个器官晚到岗,可能影响生育能力