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

LeetCode CodeTop 82.删除排序链表中的重复元素Ⅱ

1.思路:两个指针分别指向cur.next和cur.next.next,如果发现重复就一次性删除所有值为val的节点;否则cur正常前进一位

2.复杂度分析:

(1)时间复杂度:O(n),其中n为链表的长度。

(2)空间复杂度:O(1),仅用到若干额外变量。

附代码:

class Solution { public ListNode deleteDuplicates(ListNode head) { ListNode sentinel = new ListNode(); sentinel.next = head; ListNode cur = sentinel; while(cur.next != null && cur.next.next != null){ int val = cur.next.val; // 后两个节点值相同,都为val if(val == cur.next.next.val){ // 从第一个值等于val的节点开始,将值等于val的节点全部删除 while(cur.next != null && cur.next.val == val){ cur.next = cur.next.next; } }else{ cur = cur.next; } } return sentinel.next; } }

ACM模式:

import java.util.Scanner; // 将 ListNode 定义为独立的类 class ListNode { int val; ListNode next; ListNode() {} ListNode(int val) { this.val = val; this.next = null; } } public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 读取链表长度 int n = scanner.nextInt(); // 读取链表元素 int[] nums = new int[n]; for (int i = 0; i < n; i++) { nums[i] = scanner.nextInt(); } // 创建链表 ListNode head = null; if (n > 0) { head = new ListNode(nums[0]); ListNode current = head; for (int i = 1; i < n; i++) { current.next = new ListNode(nums[i]); current = current.next; } } // 调用删除重复元素方法 Solution solution = new Solution(); ListNode result = solution.deleteDuplicates(head); // 输出删除重复后的链表 if (result == null) { System.out.println(""); } else { ListNode current = result; while (current != null) { System.out.print(current.val); if (current.next != null) { System.out.print(" "); } current = current.next; } System.out.println(); } scanner.close(); } } // 删除重复元素方法放在 Solution 类中 class Solution { public ListNode deleteDuplicates(ListNode head) { ListNode sentinel = new ListNode(); sentinel.next = head; ListNode cur = sentinel; while (cur.next != null && cur.next.next != null) { int val = cur.next.val; // 后两个节点值相同,都为val if (val == cur.next.next.val) { // 从第一个值等于val的节点开始,将值等于val的节点全部删除 while (cur.next != null && cur.next.val == val) { cur.next = cur.next.next; } } else { cur = cur.next; } } return sentinel.next; } }
http://www.jsqmd.com/news/993989/

相关文章:

  • 2026年 重庆磷酸二氢钾/磷酸氢二钾/磷酸二氢钠/磷酸氢二钠/磷酸三钠厂家推荐:稳定品质与精准应用的化工源头之选 - 品牌发掘
  • Apache SeaTunnel 5 月月报:87 个 PR 合入,多维度升级功能、优化性能与修复 Bug
  • 别再手动重复造轮子了!用C#/Python为PowerMill打造你的专属自动化工具库
  • 全面解析行为验证码技术:从滑动拼图到文字点选的实战解决方案
  • P89LPC93x单片机UART、I2C、SPI、ADC外设深度解析与实战配置
  • 美团APP店铺与评论数据自动化采集工具(含签名生成、多接口协同与反反爬适配)
  • XXL-Job调度中心‘隐身’记:如何在不暴露Admin页面的情况下,让它在你的SpringCloud微服务里默默干活
  • STM32F103VC实测可用的CH19264E液晶屏8080并口驱动工程包
  • 用PyTorch复现论文:自动驾驶模型真的怕‘贴纸’攻击吗?实测5种对抗样本生成方法
  • 卫生间漏水到楼下怎么查找漏水点?2026吕梁24小时上门维修电话TOP7机构推荐,免费勘察+精准定位,专业师傅处理屋顶墙体洗手间暗管漏水 - 一休咨询
  • LayoutParser:5步搞定深度学习文档布局分析的完整指南
  • 卫生间漏水到楼下怎么查找漏水点?2026兰州24小时上门维修电话TOP7机构推荐,免费勘察+精准定位,专业师傅处理屋顶墙体洗手间暗管漏水 - 一休咨询
  • 如何快速部署GB28181视频监控平台:3步完成容器化配置
  • MPC8313E DDR与以太网接口时序设计实战解析
  • Windows下Python直连SAP RFC所需的nwrfc750官方SDK完整包(含DLL、头文件、示例与文档)
  • 具身智能数据产业链揭秘:从采集员到独角兽,数据复售模式能走多远?
  • 天津红桥防水补漏哪家靠谱?2026正规修缮公司排名实测(全区通用) - 苏易房屋修缮
  • 手把手教你搭建工业级Multi-Agent RAG系统,附完整代码与部署教程
  • 2026年广州注册公司代办服务推荐榜:一般、小规模纳税人、无地址注册、变更服务、异常处理一站式优质之选! - 信息热点
  • LeetCode CodeTop 88.合并两个有序数组
  • 天津河西防水补漏哪家靠谱?2026正规修缮公司排名实测(全区通用) - 苏易房屋修缮
  • 深入浅出跳表(SkipList):原理、实现与代码实战
  • 深度解析:Penpot云原生设计平台的微服务架构与性能优化实战指南
  • 如何高效使用downkyi哔哩下载姬:B站8K超高清视频下载终极指南
  • 2026北京朝阳区宝格丽首饰回收:这些细节决定回收价 - 逸程
  • 神经符号AI破局关键:一阶逻辑如何让AI既聪明又“讲理”?
  • 2026重庆奢侈品首饰回收实测盘点|正规渠道甄选与高价出货全攻略 - 薛定谔的梨花猫
  • CUDA从入门到精通(十四):Thrust库实战之并行算法重构
  • 南宁二手腕表回收全测评|实体店横评,一文搞定变现避坑 - 奢侈品回收评测
  • 猫抓Cat-Catch:5分钟掌握浏览器资源嗅探与智能下载