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

链表有环找入口节点原理

环形链表入口检测算法数学解释

数学原理

  1. 假设定义:

    • 链表头到环入口的距离为 a
    • 环入口到相遇点的距离为 b
    • 相遇点到环入口的距离为 c
    • 环的长度为 b + c
  2. 第一次相遇时:

    • 慢指针走了 s = a + b
    • 快指针走了 f = a + b + n(b + c) 步,其中 n 是快指针在环内转的圈数
    • 由于快指针速度是慢指针的2倍,所以 f = 2s
  3. 代入求解:

    2(a + b) = a + b + n(b + c)
    a + b = n(b + c)
    a = n(b + c) - b
    a = (n-1)(b + c) + c
    
  4. 关键结论:

    • 当 n=1 时,a = c
    • 这意味着:从链表头到环入口的距离 = 从相遇点继续走到环入口的距离

当n不等于1时

您提出了一个很好的问题!我们确实不知道具体的 n 值(快指针绕环的圈数)。让我更清晰地解释:当入口节点很远,可能快指针早就到达环而且转了好几圈了

为什么 n 的具体值不重要

  1. 我们证明了:a = (n-1)(b+c) + c,其中 a 是头到环入口的距离,b+c 是环的周长。

  2. 关键点:无论 n 是多少(1, 2, 3…),等式右边 (n-1)(b+c) + c 都表示:

    • 先在环上走 n-1 个完整的圈(即 (n-1)(b+c))
    • 再从相遇点继续走 c 步
  3. 这意味着:从相遇点走 c 步(可能再加上若干个环的周长)一定会到达环入口。

  4. 同样,从链表头走 a 步也会到达环入口。

  5. 由于 a = (n-1)(b+c) + c,如果同时:

    • 从链表头开始走
    • 从相遇点开始走
    • 都用相同的速度(每次走1步)

    那么这两个指针会同时到达环入口!

  6. 一个放到头节点走到入口节点 另一个从相遇点走到入口节点在转了几个整圈

实际上 n 的值怎么确定

在实际的链表环检测中,n 值由快慢指针首次相遇时决定,但我们不需要计算它:

  • 在标准链表(环不会特别大)中,通常 n=1。
  • 即使 n>1,算法也能正确工作:
    • 快指针在相遇时可能多走了几圈
    • 但在第二阶段,从相遇点出发的指针会沿着相同的路径(可能走几圈)最终到达入口
http://www.dtcms.com/a/357193.html

相关文章:

  • Vue3 + TS + MapboxGL.js 三维地图开发项目
  • Marin说PCB之POC电路layout设计仿真案例---11
  • Jenkins Pipeline(二)-设置Docker Agent
  • 渲染速度由什么决定?四大关键因素深度解析
  • 【拍摄学习记录】07-影调、直方图量化、向右向左
  • Docker部署openai-edge-tts和即梦API以及应用案例
  • 透视文件IO:从C库函数的‘表象’到系统调用的‘本质’
  • 12、做中学 | 初一上期 Golang函数 包 异常
  • electron-vite 配合python
  • AI驱动万物智联:IOTE 2025深圳展呈现无线通信×智能传感×AI主控技术融合
  • 软件系统的部署方式:单机、主备(冷主备、热主备)、集群
  • LeetCode100-54螺旋矩阵
  • Verilog 硬件描述语言自学——重温数电之组合逻辑电路
  • 高性能 JSON:System.Text.Json Source Generator vs 手写 Span(Utf8JsonReader/Writer)
  • 并发编程——06 JUC并发同步工具类的应用实战
  • 如何高效批量完成修改文件名的工作?
  • NullPointerException 空指针异常,为什么老是遇到?
  • 嵌入式Ubuntu22.04安装过程详解实现
  • Oracle SQL性能调优之魂:深入理解索引原理与优化实践
  • 智能接听,破局高峰占线:云蝠AI客服重塑企业服务新范式
  • 【Spring底层分析】Spring AOP补充以及@Transactional注解的底层原理分析
  • 球型摄像机实现360°无死角
  • 【前端教程】从基础到专业:诗哩诗哩网HTML视频页面重构解析
  • 技术干货|Prometheus告警及告警规则
  • APM32芯得 EP.31 | APM32F402 HC-SR04超声测距经典操作:波形输出与滤波
  • 微算法科技(NASDAQ:MLGO)一种基于FPGA的Grover搜索优化算法技术引领量子计算
  • PCIe 6.0配置与地址空间架构:深入解析设备初始化的核心机制
  • C#实现OPC客户端
  • 《Password Guessing Using Random Forest》论文解读
  • system论文阅读--HPCA25