news 2026/9/11 19:37:11

DeepSeek LeetCode 82. 删除排序链表中的重复元素 II Java实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DeepSeek LeetCode 82. 删除排序链表中的重复元素 II Java实现

LeetCode 82「删除排序链表中的重复元素 II」要求删除所有重复的节点,只保留没有重复出现的数字。下面给出 Java 实现,使用哑节点简化头节点处理。

/** * 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; } * } */classSolution{publicListNodedeleteDuplicates(ListNodehead){// 哑节点,方便处理头节点可能被删除的情况ListNodedummy=newListNode(0);dummy.next=head;ListNodeprev=dummy;// prev 始终指向已保留部分的最后一个节点ListNodecurr=head;// curr 为当前待检查的节点while(curr!=null){// 如果当前节点与下一个节点值相同,说明有重复if(curr.next!=null&&curr.val==curr.next.val){intduplicateVal=curr.val;// 跳过所有值为 duplicateVal 的节点while(curr!=null&&curr.val==duplicateVal){curr=curr.next;}// 将 prev 的下一个节点指向第一个不同值的节点prev.next=curr;}else{// 当前节点不重复,保留它,prev 和 curr 都前移prev=curr;curr=curr.next;}}returndummy.next;}}

思路说明:

· 使用哑节点 dummy 指向链表头,prev 指向已处理部分的末尾,初始为 dummy。
· 遍历链表,当发现当前节点 curr 与下一个节点值相同,记录该重复值,然后内层循环跳过所有等于该值的节点。
· 跳过重复节点后,prev.next 直接指向第一个值不同的节点(即 curr),但 prev 本身不移动,因为需要继续检查新的 curr 是否重复。
· 如果当前节点不重复,则 prev 和 curr 均前移。
· 最终返回 dummy.next,即去重后的链表头。

时间复杂度 O(n),空间复杂度 O(1)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 19:37:08

RAG 智能应用测试完整思路

RAG 智能应用测试完整思路 RAG 智能应用的测试核心思路是**「分层解耦定位瓶颈 概率化量化评估 基准集迭代回归 全链路风险防控」**。 它和传统软件测试的本质区别在于:RAG 输出是概率性生成而非确定性结果,质量是相对基线的量化评估而非绝对的“对/错…

作者头像 李华
网站建设 2026/9/11 19:36:07

微信小程序+SSM数学辅导系统:数据库设计与接口实现全解析

简介:这是一份基于微信小程序与Java后端(SSM框架MySQL)的数学辅导毕业设计完整项目,适合计算机相关专业学生用于毕业设计或课程设计参考。项目按管理员与用户两类角色设计功能模块,管理员可管理用户、学习中心、知识分…

作者头像 李华
网站建设 2026/9/11 19:34:24

open62541实战:从源码结构到嵌入式OPC UA应用

简介:基于C语言实现OPC UA规范的开源库open62541设计源码,定位工业自动化通信协议开发,面向需要构建跨厂商设备互联、符合IEC 62541国际标准的开发者与嵌入式系统工程师。源码包共1992个文件,含331个C源文件、82个头文件、36个文本…

作者头像 李华