leetcode 82. Remove Duplicates from Sorted List II (排序链表中删除重复数字II)

【顾邦小讲堂】第二十四期 电源环路测试从入门到精髓:一文掌握环路测试原理与电压注入点选择依据 电源环路测试是评估开关电源、线性电源等闭环系统稳定性的核心手段,直接关系到电源的稳定性、输出精度、动态响应、抗干扰能力甚至可靠性 阅读详情

在这里插入图片描述
删除排好序的单向链表中重复的数字。
注意是把重复的数字都删掉,而不是unique。

思路:
链表已经是排好序的,这就说明相同的数字都是在一起的。

假设[1, 2, 2, 2, 3]
删除2的时候需要确定它的左边界和右边界,分别是index=1和index=3
同时,因为是单向链表,需要知道左边界左边的一个node,
假设左边界是left, 右边界是right, left的前一个node是pre
那么删除如下:
pre.next = right.next;
right.next = null;
right = pre.next;

如何确定左右边界,让它们每次向右走一步,当出现right.val == left.val时,只移动right,直到不再满足。

同时还需要一个flag,记录是否需要删除,不删除的话只需要遍历即可。

但是还有一个问题,如果是[1, 1]怎么办,没有head的前一个节点了。
需要新定义一个ListNode充当newHead, newHead.next = head,最后返回newHead.next即可。

    public ListNode deleteDuplicates(ListNode head) {
        if(head == null) return head;
        
        ListNode newHead = new ListNode(101);
        newHead.next = head;
        ListNode pre = newHead;
        ListNode left = newHead;
        ListNode right = newHead.next;
        boolean delete = false;
        
        while(right != null) {
            delete = false;
            while(right != null && right.val == left.val) {
                left.next = right.next;
                right.next = null;
                right = left.next;
                delete = true;
            }
            if(delete) {
                pre.next = right;
                left.next = null;
                left = pre;
            }
            pre = left;
            left = right;
            if(right != null) right = right.next;
        }
        return newHead.next;
    }

如果不想用这么多的指针,可以利用原有的head指针,每次比较head.next.val 和 head.val 即可
head就相当于上面的右边界right指针,其实只需要右边界就足够。
这样就不需要再定义left, right指针了。

    public ListNode deleteDuplicates(ListNode head) {
        if(head == null) return head;
        
        ListNode newHead = new ListNode(101);
        ListNode pre = newHead;
        newHead.next = head;
        boolean delete = false;
        
        while(head != null && head.next != null) {
            delete = false;
            while(head.next != null && head.val == head.next.val) {
                delete = true;
                head = head.next;
            }
            if(delete) {
                pre.next = head.next;
                head.next = null;
                head = pre.next;
            }else {
                pre = head;
                head = head.next;
            }
        }
        
        
        
        return newHead.next;
    }
【存储原理】IO超时处理 块层block-scsi层之间 阅读详情

相关推荐

Pico设备手势追踪实战:5步搞定MRTK3手部模型与UI交互配置

本文详细介绍了在Pico设备上使用MRTK3实现手势追踪的5个关键步骤,包括环境配置、手部模型冲突解决、射线交互优化、UI交互配置及性能优化。通过实战案例和代码示例,帮助开发者快速解决MR开发中的常见问题,提升混合现实应用的交互体验。

onion的博客 497

82. Remove Duplicates from Sorted List II

Problem: Given a sorted linked list, delete all nodes that have duplicate numbers, leaving onlydistinctnumbers from the original list. Return the linked list sorted as well. Example 1: Input: ...

zzyy17的专栏 179

STM32F407通过SMBus协议精准读取BQ40Z50电池电量

本文详细介绍了STM32F407通过SMBus协议精准读取BQ40Z50电池电量的实现方法。从硬件连接到软件驱动开发,再到通信异常排查,提供了完整的解决方案。重点解析了SMBus协议的特殊时序要求、GPIO模拟驱动的关键代码,以及实际调试中的常见问题与对策,帮助开发者高效完成电池管理系统开发。

weixin_29189003的博客 250

82. Remove Duplicates from Sorted List II(删除排序链表中的重复元素 II)两种解法(C++ & 注释)

82. 删除排序链表中的重复元素 II1. 题目描述2. 迭代(Iteration)2.1 解题思路2.2 实例代码3. 递归(Recursion)3.1 解题思路3.2 实例代码4. 参考资料 1. 题目描述 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 输入: 1->2->3->3->4->4->5 输出: 1->2->5 示例 2: 输入: 1->1->1->2->3 输

主要研究图形学相关领域 397

stm32cubeMX使用HAL库点亮LED流水灯

目录

weixin_46129506的博客 3794

ArcMap|时空地理加权回归(GTWR)

ArcGIS的GTWR插件下载地址:https://www.researchgate.net/publication/329518786_GTWR_ADDIN_Valid_till_Dec_31_2022 更详细的操作参考: https://www.bilibili.com/video/BV1fR4y1M7xB?spm_id_from=333.999.0.0 https://blog.csdn.net/weixin_40008135/article/details/112693520 双击“GTWR_Be

个人学习笔记 1万+

LeetCode 82 Remove Duplicates from Sorted List II(从已排序链表中移除重复元素)(Linked List)(*)

翻译给定一个已排序链表,删除所有的重复节点,只保留原始链表中独特的数字。例如, 给定 1->2->3->3->4->4->5, 返回 1->2->5. 给定 1->1->1->2->3, 返回 2->3.原文Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct

nomasp 7719

Modis数据处理工具:MRT百度网盘下载和手把手图文安装教程

如下图所示为MODIS Reprojection Tool(MRT)的软界面,看似简单,却是Modis遥感影像必不可少的处理工具,如投影变换等。本文以图文并茂的形式,详细讲解MRT软件在Windows10平台上的安装过程,并附MRT软件百度网盘下载地址。 Modis Tool主界面: 一、安装过程 1、安装Java运行环境 双击Java.exe,安装运行环境。默认的安装路径为C:\Program Files (x86)\Java\jre6\bin,后面需要用到这个路径。 等待...

智慧空间实验室 2621

【LeetCode】 82. Remove Duplicates from Sorted List II 删除排序链表中的重复元素 II(Medium)(JAVA)

【LeetCode】 82. Remove Duplicates from Sorted List II 删除排序链表中的重复元素 II(Medium)(JAVA) 题目地址: https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/ 题目描述: Given a sorted linked list, delete a...

qq_16927853的博客 256

FPGA实现AXI-Stream通信

本文介绍了在FPGA中实现AXI-Stream接口的工业级方案,重点解析了核心协议信号(TVALID/TREADY/TDATA/TLAST)与可选扩展信号,并提供了Verilog最小化实现示例。文章详细阐述了握手协议规则、时序约束方法,以及吞吐量优化技巧(如寄存器切片和双缓冲策略),同时给出了跨时钟域处理的异步FIFO解决方案。此外,还包含验证调试方法(Testbench结构和ILA触发设置)和典型应用场景(视频处理/网络传输),最后提供了资源消耗参考数据。该实现方案严格遵循Xilinx/Intel官方规范

whm128的博客 1463

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Leetcode 82. 删除排序链表中的重复元素 II(Remove Duplicates from Sorted List II)

Leetcode 82. 删除排序链表中的重复元素 II 1 题目描述(Leetcode题目链接)   给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 输入: 1->2->3->3->4->4->5 输出: 1->2->5 输入: 1->1->1->2->3 输出: 2->3 ...

qq_39378221的博客 193

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LeetCode 82. 删除排序链表中的重复元素 II(Remove Duplicates from Sorted List II)

82. 删除排序链表中的重复元素 II 82. Remove Duplicates from Sorted List II 题目描述 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中没有重复出现的数字。 LeetCode82. Remove Duplicates from Sorted List II中等 示例 1: 输入: 1->2->3->3->4-&gt...

weixin_30415801的博客 124

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LeetCode //C - 82. Remove Duplicates from Sorted List II

【代码】LeetCode //C - 82. Remove Duplicates from Sorted List II。

Made in Code 1380

LeetCode 82. 删除排序链表中的重复元素 II Remove Duplicates from Sorted List II(C语言)

题目描述: 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 输入: 1->2->3->3->4->4->5 输出: 1->2->5 示例 2: 输入: 1->1->1->2->3 输出: 2->3 题目解答: 方法1:三指针遍历 利用三个指针head,t1,t2...

hang404的博客 311

LeetCode 82.Remove Duplicates from Sorted List II 删除排序链表中的重复元素 II

题目描述 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 输入: 1->2->3->3->4->4->5 输出: 1->2->5 示例 2: 输入: 1->1->1->2->3 输出: 2->3 来源:力扣(LeetCode) 链接:https://leetcode-c...

it-hao的博客 191

剑指18-2. 删除链表中重复的节点 && LeetCode 82. Remove Duplicates from Sorted List II

剑指18-2. 删除链表中重复的节点 && LeetCode 82. Remove Duplicates from Sorted List II (Medium) 主要知识点:链表、递归、快慢指针;优先级:4

温迪今天刷题了吗 349

【LEETCODE】82- Remove Duplicates from Sorted List II [Python]

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list. For example, Given 1->2->3->3->4->4->5, return 1->2->5. Given 1->1-

aliceyangxi1987的博客 1321

【LeetCode 面试经典150题】82. Remove Duplicates from Sorted List II 删除排序列表中重复元素 II

Given the of a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list. Return the linked list sorted as well.给定一个排序链表的,删除所有有重复数字的节点,只留下原始列表中的独特数字。返回按顺序排列的链表。输入: = [1,2,3,3,4,4,5] 输出: [1,2,5]

qq_43513394的博客 470

【LeetCode】82. Remove Duplicates from Sorted List II 解题报告(Python)

题目分析: 这一题是给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。如: 输入: 1->2->3->3->4->4->5 输出: 1->2->5 解题思路:(描述的稀里糊涂,希望你能看懂) 这个题我们先逐位循环,如果下一位的值等于下下一位的值,就标记下下一位的位置。如果下一位的值不等于下下一位的值,就令指针后移,...

L141210113的专栏 330

LeetCode 82. Remove Duplicates from Sorted List II(删除链表中的重复节点)

原题网址:https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/ Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original

James Pan 785

leetcode - 82. Remove Duplicates from Sorted List II

leetcode-82

sinat_41679123的博客 756

LeetCode 82.Remove Duplicates from Sorted List II Linked List/Medium

文章目录1.Description2.Example3.Solution1.双指针一2.双指针二 1.Description Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list. Return the linked list sorted as well. 2.Example Input: 1->2

押切徹的博客 148
上一篇: cpp std::bind std::cref std::ref 实例说明
下一篇: leetcode 2. Add Two Numbers(链表两数相加)
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值