博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Leetcode] Linked List Cycle II
阅读量:4965 次
发布时间:2019-06-12

本文共 414 字,大约阅读时间需要 1 分钟。

如何找到环的起始位置?算法大家估计都已经是耳熟能详了,关键是证明。

我们假设从起始位置到环的起点的长度为X,相遇位置离起始点的距离为K,环的长度为Y,由于fast pointer的速度是low pointer的两倍。所以

X+mY+K=2*(X+nY+K)

X+K=(m-2n)Y

从这个等式可以解释为什么:慢指针从相遇处,快指针从起点处,以相同速率移动,最后一定会在环的起点处相遇。

快指针从起点第一次走到环的K位置的时候正好达到环的长度的整数倍,那么当他到达环的开始的时候,实际上还有K步可以达到环长度的整数倍;对于慢指针来说,他是在环上移动,本身相对于起点来说已经移动了k步,那么当他到达环的起点的时候,实际上距离环长度的整数倍也是有K步,所以,两者在环的起始位置肯定能够相遇。

 

参考当中有一个非常好的证明

[1]

转载于:https://www.cnblogs.com/deepblueme/p/4738366.html

你可能感兴趣的文章
分页, 解析器, 渲染器
查看>>
fedora输入法
查看>>
关于数组去重的几种方法-------javascript描述
查看>>
Vue.js系列之三模板语法
查看>>
hihoCoder #1238 Total Highway Distance
查看>>
JAVA基础(7)-数组的排序
查看>>
JFinal使用笔记1-部署demo项目到本地tomcat
查看>>
php 有时候难以输出显示的信息可以用ob缓冲区来做
查看>>
挖地雷
查看>>
luogu P2617 Dynamic Rankings(主席树)
查看>>
MongoDB 安装与配置
查看>>
Linux 常用命令
查看>>
MySQL查询
查看>>
MongoDB(四)——管理架构
查看>>
Python用subprocess的Popen来调用系统命令
查看>>
深入浅出谈开窗函数(一)
查看>>
QlikView实现部分载入数据的功能(Partial Load)
查看>>
Rail Fullstack Web 开发
查看>>
英文Windows系统打开带中文TXT出现乱码
查看>>
基于nodeJS的小说爬虫实战
查看>>