算法题-简单系列-06-删除有序链表中重复的元素

2023-12-05

1. 题目:

在这里插入图片描述

1.1 循环遍历

既然连续相同的元素只留下一个,我们留下哪一个最好呢?当然是遇到的第一个元素了!

因为第一个元素直接就与前面的链表节点连接好了,前面就不用管了,只需要跳过后面重复的元素,连接第一个不重复的元素就可以了,在链表中连接后面的元素总比连接前面的元素更方便嘛,因为不能逆序访问。

具体做法:

step 1:判断链表是否为空链表,空链表不处理直接返回。
step 2:使用一个指针遍历链表,如果指针当前节点与下一个节点的值相同,我们就跳过下一个节点,当前节点直接连接下个节点的后一位。
step 3:如果当前节点与下一个节点值不同,继续往后遍历。
step 4:循环过程中每次用到了两个节点值,要检查连续两个节点是否为空。

    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param head ListNode类
     * @return ListNode类
     */
    public ListNode deleteDuplicates (ListNode head) {
        // write code here
        if (head == null) {
            return null;
        }
        ListNode cur = head;
        while (cur != null && cur.next != null) {
            //如果当前与下一位相等则忽略下一位
            if (cur.val == cur.next.val) {
                cur.next = cur.next.next;
            } else {
                cur = cur.next;
            }
        }
        return head;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

算法题-简单系列-06-删除有序链表中重复的元素 的相关文章

随机推荐

  • Linux报too many open files的解决方案及 lsof、sysctl 命令介绍

    Too many open files in system 问题处理 服务器异常 一串的etc下的shell文件报 etc profile d bash completion sh Too many open files in system
  • 算法题-简单系列-03-判断链表中是否有环

    文章目录 1 题目 1 1 思路1 双指针 1 2 思路2 哈希表 1 题目 判断给定的链表中是否有环 如果有环则返回true 否则返回false 1 1 思路1 双指针 我们使用两个指针 fast 与 slow 它们起始都位于链表的头部
  • React为啥要用PureComponent代替Component

    个人博客 公众号 React中的purecomponent 求关注 写在前面的话 之所以写这个文章 是因为现在在维护react的旧项目 用的是类组件 所以不得不使用pureComponent 而现在开发都是用函数式组件 所以不建议用类组件开
  • Android 相机库CameraView源码解析 (三) : 滤镜相关类说明

    1 前言 这段时间 在使用 natario1 CameraView 来实现带滤镜的 预览 拍照 录像 功能 由于 CameraView 封装的比较到位 在项目前期 的确为我们节省了不少时间 但随着项目持续深入 对于 CameraView 的
  • Android 相机库CameraView源码解析 (四) : 带滤镜拍照

    1 前言 这段时间 在使用 natario1 CameraView 来实现带滤镜的 预览 拍照 录像 功能 由于 CameraView 封装的比较到位 在项目前期 的确为我们节省了不少时间 但随着项目持续深入 对于 CameraView 的
  • 阿里内部自动化测试教程:python+pytest接口自动化-HTTP协议基础

    HTTP协议简介 HTTP 即 HyperText Transfer Protocol 超文本传输协议 是互联网上应用最为广泛的一种网络协议 所有的 WWW 文件都必须遵守这个标准 设计 HTTP 最初的目的是为了提供一种发布和接收 HTM
  • 算法题-简单系列-02-合并两个排序的算法

    文章目录 1 题目 1 1 迭代 1 题目 输入两个递增的链表 单个链表的长度为n 合并这两个链表并使新链表中的节点仍然是递增排序的 1 1 迭代 设置result为哑结点 放置于新链表之前 最后返回的就是result next 设置cur
  • C/C++ 谓词 lambda表达式

    文章目录 前言 1 引例 2 谓词的含义 2 1 谓词运用 总结 前言 最近看lambda相关知识点 发现这个概念比较难以理解 看了几遍 可能是第一次正式接触STL的原因 对标准库的泛型编程理解不够深刻 这篇博客就写一下lambda的相关
  • centos7 设置静态ip

    文章目录 设置VMware 主机设置 centos7 设置 设置VMware 主机设置 cen
  • 算法题-简单系列-05-两个链表的第一个公共结点

    文章目录 1 题目 1 1 思路1 循环遍历 1 题目 输入两个无环的单向链表 找出它们的第一个公共结点 如果没有公共节点则返回空 1 1 思路1 循环遍历 使用两个指针N1 N2 一个从链表1的头节点开始遍历 我们记为N1 一个从链表2的
  • 计算机组成与设计:硬件/软件接口,第二章详细梳理,附思维导图

    文章目录 二 指令 计算机的语言 章节导图 一 MIPS概述 计算机的组成 MIPS的设计思想 MIPS 32中的通用寄存器 二 三类汇编指令
  • JAVA打印日志规范实践

    前言 日常开发 日志打印尤为重要 记录程序运行情况 方便快速定位问题 一份实用的日志打印规范能极大的帮助我们日常开发 一 日志介绍 1 弄懂日志 SpringBoot启动日志 2 什么是日志 日志 维基百科中对其的定义是 一个或多个由服务器
  • 当班主任应该具备什么条件

    当班主任需要具备什么条件 这个问题其实可以从多个角度来回答 下面我列举一些我认为比较重要的条件 责任心和爱心 班主任的职责是关注学生的成长 帮助学生解决学习和生活中的问题 这需要班主任具备强烈的责任心和爱心 只有真正关心学生的成长和发展 才
  • 算法题-简单系列-01-链表反转

    文章目录 1 题目 1 1 使用栈解决 1 2 反转链表 1 题目 给定一个单链表的头结点pHead 该头节点是有值的 比如在下图 它的val是1 长度为n 反转该链表后 返回新链表的表头 如当输入链表 1 2 3 时 经反转后 原链表变为
  • 数字化转型浪潮中,施耐德电气如何用技术革新引领未来?

    作为一家187年的老牌企业 施耐德电气不仅见证了科技的演进 也是数字化转型潮流中的先行者 在近日的施耐德电气数字化战略暨软件创新沟通会上 施耐德电气全球执行副总裁 首席数字官 Peter Weckesser 施耐德电气副总裁 数字化服务业务
  • 零基础上手,秒识别检测,IDEA研究院发布全新T-Rex模型

    目标检测作为当前计算机视觉落地的热点技术之一 已被广泛应用于自动驾驶 智慧园区 工业检测和卫星遥感等场景 开发者在研究相关目标检测技术时 通常需熟练掌握图像目标检测框架 如通用目标检测框架 YOLO 系列 旋转目标检测框架 R3Det 等技
  • 什么是野指针?

    什么是野指针 指针指向了非法的地址空间 称之为野指针
  • Pytorch深度强化学习1-5:详解蒙特卡洛强化学习原理

    目录 0 专栏介绍 1 蒙特卡洛强化学习 2 策略评估原理 3 策略改进原理 3 1 同轨蒙特卡洛强化学习 3 2 离轨蒙特卡洛强化学习 0 专栏介绍 本专栏重点介绍强化学习技术的数学原理 并且 采用Pytorch框架对常见的强化学习算法
  • 云原生之深入解析如何限制Kubernetes集群中文件描述符与线程数量

    一 背景 linux 中为了防止进程恶意使用资源 系统使用 ulimit 来限制进程的资源使用情况 包括文件描述符 线程数 内存大小等 同样地在容器化场景中 需要限制其系统资源的使用量 ulimit docker 默认支持 ulimit 设
  • 算法题-简单系列-06-删除有序链表中重复的元素

    文章目录 1 题目 1 1 循环遍历 1 题目 1 1 循环遍历 既然连续相同的元素只留下一个 我们留下哪一个最好呢 当然是遇到的第一个元素了 因为第一个元素直接就与前面的链表节点连接好了 前面就不用管了 只需要跳过后面重复的元素 连接第一