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

LeetCode---环形链表 II

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; } }
http://www.cnnetsun.cn/news/1500.html

相关文章:

  • 打卡信奥刷题(2514)用C++实现信奥 P1950 长方形
  • 打卡信奥刷题(2515)用C++实现信奥 P1955 [NOI2015] 程序自动分析
  • 打卡信奥刷题(2516)用C++实现信奥 P1956 Sum
  • 计算广告:智能时代的营销科学与实践(三)
  • 计算广告:智能时代的营销科学与实践(四)
  • 如何将你的游戏发布到steam平台?
  • GIF帧分析工具
  • 12.10小结
  • 爬虫数据增量更新:时间戳、offset、WebSocket 长连接方案
  • Java-元注解 (Meta-Annotations)
  • @Component
  • 力扣-94.二叉树的中序遍历(Java递归)
  • 综合素质面试hr面
  • 降重与AIGC优化的认知任务解耦:八类工具在四项核心活动中的生态位映射与协同路径
  • PaperXie 降重复率/AI率功能如何化解学术写作中的“生成式焦虑”:一种面向“学术表达真实性”的智能协作框架——一位研究生的真实实践记录
  • 科研文稿 “学术查重的降噪滤波器”:PaperXie 降重降 AI 率如何让重复文本从 “信号杂音” 变 “导师认可的纯净成果”
  • 八款 AI 文本优化工具能力棱镜:基于“语义保真—AI消除—学科适配—流程嵌入”四维模型的八工具全景评估
  • 论文查重 / AI 检测总超标?PaperXie 用 “学术表达重塑法” 帮你把重复率 / AI 率压到安全线内
  • 构建你的“学术表达合规生态”:八款降重/AIGC工具如何在不同场景中协同降低检测风险?
  • PaperXie 数据分析功能如何重塑科研决策支持:一种面向“从数据到洞见”闭环构建的智能协作框架——一位研究生的真实实践记录
  • 论文数据分析总卡壳?PaperXie 用 “数据逻辑锚定法” 帮你从 “乱数堆” 里挖出研究结论
  • 50天50个小项目 (React19 + Tailwindcss V4) ✨| FAQ Collapse(问题解答折叠面板)
  • 《Mysql数据库应用》 第2版 郭文明 实验2 数据查询操作 答案
  • 同样是单片机工程师,高段位的已经在“定义智能”,新手还在跟LED死磕?
  • STM32居然能和服务器“聊天”?MQTT通信实现指南,小白也能看懂!
  • PPT文件的两种不可编辑情况
  • Excel文件中的保护工作表与工作簿的区别与应用
  • python猫眼电影数据可视化与智能分析平台 数据大屏 电影票房预测 电影推荐(协同过滤推荐算法)爬虫flask框架
  • 基于知识图谱电影推荐问答系统 neo4j图形数据库 问答系统 推荐系统 协同过滤推荐算法(建议收藏)✅
  • 基于python商品购物商城系统 购物系统 Django框架 购物平台 网购平台 大数据(建议收藏)✅