网站制作建设南昌网站建设公司

深圳市方杰网络科技有限公司 2026/09/09 20:27:10

LeetCode---环形链表 II

首先要解决这个题,我们先要明白我们要考虑的情况

如果链表没有环,则直接返回null

ListNode fast=head; ListNode slow=head; while(fast!=null&&fast.next!=null){ fast=fast.next.next; slow=slow.next; if(fast==slow){ break; } }
if(fast==null||fast.next==null){ return null; }

如果有环,那我们也要考虑两种情况

圈大

从上面的图片中我们可以看出,当fast一次走两步,slow一次走一步的时候,我们会发现,

slow所走的路程是X+C-Y

fast所走的路程是X+C+C-Y

注意:慢指针不会走了很多圈才会被追上,实际上慢指针最多走半圈

如果实在想不懂,可以看看上面的图,一步一步带入进去

由于fast是一次性走两步,slow是一次性走一步

所以fast所走的路程是slow所走路程的两倍

slow所走的路程是X+C-Y

fast所走的路程是X+C+C-Y

所以我们可以列出等式 X+C+C-Y=2*(X+C-Y)

化简之后就可以看到

X==Y

由于X==Y

所以我们让指针1指针2同时走,那么它俩就会在入环的第一个节点相遇

圈小

所谓的圈小,就是当slow进环的时候,fast已经走了很多圈了

此时当slow和fast相遇的时候,走的路程分别是

slow:X+C-Y

fast:X+N*C+C-Y

由于fast所走的路程是slow的两倍

所以

2*(X+C-Y)=X+N*C+C-Y

化简后得到

x+c-y=nc

x=(n-1)c+y

当n==0的时候,X==Y,恰好是圈大的情况

当fast走了n-1圈后,依旧是回到相遇点,然后再加上个Y,正好是入环的第一个节点

假设圈的长度是2,当slow走了X的一半的时候,fast恰好入环

此时,slow每走一步,fast就走一圈

完整版代码:

public class Solution { public ListNode detectCycle(ListNode head) { ListNode slow=head; ListNode fast=head; //首先在环中找到相遇的点 while(fast!=null&&fast.next!=null){ slow=slow.next; fast=fast.next.next; if(slow==fast){ break; } } //没找到环的情况 if(fast==null||fast.next==null){ return null; } //定义一个新节点,从头开始走,每次走一步,fast也每次走一步 //当cur和fast相等的时候,跳出循环,此时这个节点就是入环的第一个节点 ListNode cur=head; while(cur!=fast){ cur=cur.next; fast=fast.next; } return cur; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

四川网站建设网站建设 流程

摘要随着现代农业的快速发展,果蔬作物的疾病防治成为影响农产品质量和产量的关键因素。传统的防治方式依赖人工经验,效率低下且难以实现精准化管理。信息技术的发展为农业智能化提供了

2026/06/30 13:24:35

昆山网站建设徐州网站建设

还在为复杂的网络配置而头疼?S-UI Windows版为你带来革命性的一键安装体验!这个强大的网络管理面板工具专为Windows平台设计,让你轻松管理各种网络

2026/06/30 12:55:33

长沙市网站建设公司网站建设全包

环境仿真在不同领域的应用环境仿真软件在多个领域中发挥着重要作用,从城市规划到生态系统管理,从物流优化到工业生产,其应用范围广泛且多样。本节将详细介绍环境仿真软

2026/06/30 14:15:39

网站建设广告银川网站建设

LangFlow婚礼邀请函智能撰写助手在婚庆策划公司的一次内部讨论会上,一位资深文案正为如何在两天内完成30份风格各异的婚礼邀请函而发愁。每对新人想要的语气都不一样:有的要

2026/06/30 13:37:06

品牌网站建设滁州网站建设

语音识别+文本理解双加速:TensorRT统一推理方案在智能客服、车载语音助手和实时翻译等应用中,用户对响应速度的要求越来越高。一个典型的语音交互系统需要先通过语音

2026/06/30 11:26:25

asp网站建设江苏省建设厅网站

Java全栈开发工程师的面试实战:从基础到项目落地面试官:你好,我是技术面试官,今天来聊一聊你的技术能力。先简单介绍一下你自己吧。应聘者

2026/06/30 14:18:09

滁州网站建设黑龙江网站建设

Sketch制作IndexTTS2品牌视觉元素,统一对外形象识别在开源AI语音合成项目日益增多的今天,一个技术方案能否脱颖而出,早已不再仅仅取决于模型性能。用

2026/06/30 10:31:50

北京网站建设东营网站建设

PyTorch-CUDA-v2.8 镜像与 Markdown 文档实践:构建高效可读的技术体系在深度学习项目日益复杂的今天,开发者面临两大核心挑战:一是如何快

2026/06/30 10:18:19

装饰网站建设怀化网站建设

《破解 Python 多继承的迷宫:钻石问题、MRO 与 C3 线性化的全景实战解析》在我教授 Python 的这些年里,有一个问题几乎每一届学生都会问:“老

2026/06/30 11:41:27

网站建设团队永康网站建设

Figma与HTML双向转换终极指南:打破设计与开发壁垒的完整教程【免费下载链接】figma-htmlBuilder.io for Figma: AI generation, expor

2026/06/30 13:43:07