news 2026/4/15 12:16:09

142.环形链表Ⅱ

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
142.环形链表Ⅱ

题目描述

题解一(哈希表)

思路

遍历链表中的每个节点,并将它记录下来;一旦遇到了此前遍历过的节点,就可以判定链表中存在环

代码

publicclassSolution{publicListNodedetectCycle(ListNodehead){ListNodepos=head;Set<ListNode>visited=newHashSet<ListNode>();while(pos!=null){if(visited.contains(pos)){returnpos;}else{visited.add(pos);}pos=pos.next;}returnnull;}}

复杂度分析

  • 时间复杂度:O(N),其中 N 为链表中节点的数目。我们恰好需要访问链表中的每一个节点
  • 空间复杂度:O(N),其中 N 为链表中节点的数目。我们需要将链表中的每个节点都保存在哈希表当中

题解二(快慢指针)

思路

代码

publicclassSolution{publicListNodedetectCycle(ListNodehead){// 如果链表为空或只有一个节点且无环,直接返回 nullif(head==null||head.next==null){returnnull;}ListNodeslow=head;ListNodefast=head;// 阶段一:快慢指针判断是否有环while(fast!=null&&fast.next!=null){slow=slow.next;// 慢指针走一步fast=fast.next.next;// 快指针走两步// 如果快慢指针相遇,说明有环if(slow==fast){// 阶段二:寻找环的入口ListNodeindex1=fast;// index1 从相遇点开始ListNodeindex2=head;// index2 从头节点开始// 两个指针每次各走一步,直到相遇while(index1!=index2){index1=index1.next;index2=index2.next;}// 相遇点即为环的入口returnindex1;}}// 如果退出循环,说明遇到了 null,链表没有环returnnull;}}

复杂度分析

  • 时间复杂度:O(N),其中 N 为链表中节点的数目。在最初判断快慢指针是否相遇时,slow 指针走过的距离不会超过链表的总长度;随后寻找入环点时,走过的距离也不会超过链表的总长度。因此,总的执行时间为 O(N)+O(N)=O(N)
  • 空间复杂度:O(1)。我们只使用了 slow,fast,index1,index2四个指针
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 12:15:43

Java线程池原理与应用

Java线程池原理与应用 引言 在Java多线程编程中&#xff0c;线程池是一种重要的技术&#xff0c;它通过复用已创建的线程来降低线程创建和销毁的开销&#xff0c;提高系统响应速度&#xff0c;并更好地管理多线程环境下的资源。本文将探讨Java线程池的工作原理及其在实际应用中…

作者头像 李华
网站建设 2026/4/15 12:15:12

[特殊字符]前端小白成长日记:HTML列表+表格初体验 有干货!!!

今天终于把HTML的列表和表格搞明白啦&#xff01;从一开始标签嵌套混乱、页面乱成一团&#xff0c;到现在做出了清晰的商城支付向导和数据表格&#xff0c;成就感直接拉满✨一、列表练习&#xff1a; 从乱码到层级分明&#xff0c;踩了不少坑最开始写支付向导的时候&#xff0c…

作者头像 李华
网站建设 2026/4/15 12:11:24

OpenWrt访问控制插件:7个实战方案解决家庭网络管控难题

OpenWrt访问控制插件&#xff1a;7个实战方案解决家庭网络管控难题 【免费下载链接】luci-access-control OpenWrt internet access scheduler 项目地址: https://gitcode.com/gh_mirrors/lu/luci-access-control 在现代家庭和企业网络中&#xff0c;设备数量激增带来的…

作者头像 李华
网站建设 2026/4/15 12:11:23

这可能是2026年最全最详细的Java面试八股文

前言: 本文收集整理了各大厂常见面试题 N 道&#xff0c;你想要的这里都有内容涵盖&#xff1a;Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈&#xff0c;希望大家都能找到…

作者头像 李华
网站建设 2026/4/15 12:10:30

有限元仿真自动化:基于Python的Comsol多物理场脚本开发实践

有限元仿真自动化&#xff1a;基于Python的Comsol多物理场脚本开发实践 【免费下载链接】MPh Pythonic scripting interface for Comsol Multiphysics 项目地址: https://gitcode.com/gh_mirrors/mp/MPh 在科学计算与工程仿真领域&#xff0c;有限元分析工具的自动化控制…

作者头像 李华