【LeetCode】剑指 Offer 18. 删除链表中重复的节点(题目二) p122 -- Java Version

news2024/9/22 3:47:50

题目链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-list/

1. 题目介绍(83. 删除排序链表中的重复元素)

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

【测试用例】:
示例 1:
在这里插入图片描述

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

示例 2:
在这里插入图片描述

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

【条件约束】:

提示:

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

【相似题目】:

  • 【LeetCode】剑指 Offer 18. 删除链表的节点(题目一) p119 – Java Version
  • 【LeetCode】No.237. 删除链表中的节点 – Java Version

2. 题解

2.1 一次遍历 – O(n)

时间复杂度O(n),空间复杂度O(1)
在这里插入图片描述

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        // 判空
        if (head == null) return head;
        ListNode cur = head;
        // 循环遍历
        while (cur.next != null) {
            if (cur.val == cur.next.val) {
                cur.next = cur.next.next;
            } else {
                cur = cur.next;
            }
        }
        return head;
    }
}

在这里插入图片描述

2.2 快慢指针 – O(n)

时间复杂度O(n),空间复杂度O(n)
在这里插入图片描述

在这里插入图片描述

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */

class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        // 判空
        if (head == null) return head;
        ListNode l = head;
        ListNode r = l.next;
        // 循环遍历
        while (r != null) {
            if (l.val != r.val){
                l.next = r;
                l = l.next;
            }
            r = r.next;
        }
        l.next = r;

        return head;
    }
}

在这里插入图片描述

3. 参考资料

[1] 删除排序链表中的重复元素 – 官方题解
[2] 【简单明晰】双指针思路简单代码 – 快慢指针

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/377650.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习-BM-FKNCN、BM-FKNN等分类器对比实验

目录 一、简介和环境准备 二、算法简介 2.1四种方法类&#xff1a; 2.1.1FKNN 2.1.2FKNCN 2.1.3BM-FKNN 2.1.3BM-FKNCN 2.2数据预处理 2.3输出视图 2.4调用各种方法看准确率 2.4.1BM-FKNCN 2.4.2BM-FKNN 2.4.3FKNCN 2.4.4FKNN 2.4.5KNN 一、简介和环境准备 k…

Java9之HttpClientAPI实战详解

Java9 之 HttpClientAPI 实战详解 前言 相信关注 java9 的小伙伴们都知道 java9 版本内置模块提供了 Http 功能&#xff0c;当然并不是说之前 jdk 之前并不支持&#xff0c;那么这次更新又多了什么呢&#xff1f;或者是解决了什么问题&#xff1f; 说明 自 JDK 1.0 以来&…

图灵完备及TypeScript图灵完备性验证

一、图灵完备 1.图灵完备的概念 首先从定义出发&#xff0c;什么是图灵完备&#xff1a;图灵完备指一系列操作数据的规则能够模拟任何图灵机。 WikiPedia-图灵完备介绍&#xff0c;在可计算性理论&#xff0c;如果一系列操作数据的规则&#xff08;如指令集、编程语言、细胞自…

centos安装Anaconda3

目录一、参考二、Anaconda简介1、用途2、关于anaconda三、下载安装1、下载2、安装anaconda3、配置环境遍历4、测试配置结果5、设置显示前缀一、参考 在centos上安装Anaconda 最新Anaconda3的安装配置及使用教程&#xff08;附图文&#xff09; 二、Anaconda简介 一句话&…

系统升级丨分享返佣,助力商企实现低成本高转化营销

秉承助力传统经济数字化转型的长远理念 酷雷曼VR再次在VR全景营销中发力 创新研发“分享返佣”功能 进一步拓宽商企VR全景营销渠道 助力商企搭建低成本、高传播、高转化 的VR营销体系 01、什么是“分享返佣”&#xff1f; ●“分享返佣”即“推广”返佣&#xff0c;是酷…

干货满满!MES的简介和运用

导读 谈及MES必须先谈生产&#xff0c;生产体系模型如图所示&#xff0c;涉及人、财、物、信息等资源&#xff0c;产、供、销等环节&#xff0c;以及供应商、客户、合作伙伴等。 其中&#xff0c;生产管理是通过对生产系统的战略计划、组织、指挥、实施、协调、控制等活动&…

【经验总结】10年的嵌入式开发老手,到底是如何快速学习和使用RT-Thread的?(文末赠书5本)

【经验总结】一位近10年的嵌入式开发老手&#xff0c;到底是如何快速学习和使用RT-Thread的&#xff1f; RT-Thread绝对可以称得上国内优秀且排名靠前的操作系统&#xff0c;在嵌入式IoT领域一直享有盛名。近些年&#xff0c;物联网产业的大热&#xff0c;更是直接将RT-Thread这…

信贷系统学习总结(5)—— 简单的风控示例(含代码)

一、背景1.为什么要做风控?目前我们业务有使用到非常多的AI能力,如ocr识别、语音测评等,这些能力往往都比较费钱或者费资源,所以在产品层面也希望我们对用户的能力使用次数做一定的限制,因此风控是必须的!2.为什么要自己写风控?那么多开源的风控组件,为什么还要写呢?是不是想…

一个大型网站架构的演变历程

正序&#xff1a; Rome was not built in a day&#xff08;罗马不是一天建成的。&#xff09;一个成熟的大型网站从来都不是一蹴而就的&#xff0c;需要经过多次架构的调整和升级&#xff0c;我们熟知的大型网站比如京东、淘宝、亚马逊&#xff0c;它们每天都有巨大的用户访问…

什么蓝牙耳机打电话效果最好?通话效果好的无线蓝牙耳机

2023年了&#xff0c;TWS耳机虽说近乎人手一只了&#xff0c;但用户换新的需求和呼声依然热火朝天&#xff0c;因为我们想要听音乐、刷视频的时候都得准备&#xff0c;下面整理一些通话效果不错的耳机品牌。 第一款&#xff1a;南卡小音舱蓝牙耳机 动圈单元&#xff1a;13.3m…

华为OD机试题,用 Java 解【靠谱的车】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…

基于springboot的微信公众号管理系统(支持多公众号接入)

微信公众号管理系统&#xff0c;支持多公众号接入。提供公众号菜单、自动回复、公众号素材、模板消息、CMS等管理功能 项目说明 是一个轻量级的公众号开发种子项目&#xff0c;可快速接入微信公众号管理功能swagger文档&#xff08;启动wx-api后查看&#xff09;&#xff1a;…

四信⾼速动态称重治超系统 不停车超载预检

随着交通运输行业的飞速发展&#xff0c;违法超载现象屡见不鲜&#xff0c;对公路、桥梁等造成了严重破坏&#xff0c;且容易引发交通事故。因此&#xff0c;有必要采用超载治理模式&#xff0c;有效延伸超限检测站管理上的时空范围、缓解执法力量不足的矛盾&#xff0c;以便进…

CAD坐标有哪些输入方式?来看看这些CAD坐标输入方式!

在CAD设计过程中&#xff0c;有时需要通过已知坐标点来画图&#xff0c;有时又需要通过已知角度和距离来画图&#xff0c;在这种情况下&#xff0c;由于已知条件不同&#xff0c;所以便需要用不同的方式来定位点。那么&#xff0c;你知道CAD坐标有哪些输入方式吗&#xff1f;本…

JUC(二)

1.可重入锁–ReentrantLock原理 1.1.非公平锁的实现原理 1.1.1.加锁解锁流程 1>.先从构造器开始看,默认为非公平锁,可以在构造函数中设置参数指定公平锁 public ReentrantLock() {sync = new NonfairSync(); }public ReentrantLock

Packet Tracer配置CHAP双向认证

Packet Tracer配置CHAP双向认证 【拓扑图】 【设备参数表】 设备 接口 IP地址 子网掩码 默认网关 R1 S0/0/0 192.168.12.1 255.255.255.0 N/A R2 S0/0/0 192.168.12.2 255.255.255.0 N/A 【实验步骤】 Router>en Router#conf Configuring from terminal, me…

论文笔记:A Time Series is Worth 64 Words: Long-term Forecasting with Transformers

ICLR 2023 比较简单&#xff0c;就不分intro、model这些了 1 核心思想1&#xff1a;patching 给定每个时间段的长度、划分的stride&#xff0c;将时间序列分成若干个时间段 时间段之间可以有重叠&#xff0c;也可以没有每一个时间段视为一个token 1.1 使用patching的好处 降…

Java常见启动命令 -jar、-server、-cp比较

文章目录Java程序常见启动方式java -jarjava -server与-client参数java -cpJava程序常见启动方式 当前java程序启动主要以 -jar、-server、-cp等几个命令启动 jar 程序&#xff0c;其中我们最常用的java -jar启动方式&#xff0c;通常我们需要将当前工程所依赖的所有包编译到一…

全网资料最全Java数据结构与算法(1)

一、数据结构和算法概述 1.1什么是数据结构&#xff1f; 官方解释&#xff1a; 数据结构是一门研究非数值计算的程序设计问题中的操作对象&#xff0c;以及他们之间的关系和操作等相关问题的学科。 大白话&#xff1a; 数据结构就是把数据元素按照一定的关系组织起来的集合&a…

leecode-C语言实现-28. 找出字符串中第一个匹配项的下标

一、题目给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。示例 1&#xff1a;输入&#xff1a;haystack …