快慢指针判断环起点的数学解析

发布时间:2024年01月08日

分析:
在这里插入图片描述

如图所示,快慢指针从起点出发,可以同时到达相遇点。

刚出发时,慢指针每次走1个节点,快指针每次走两个节点,假设慢指针速度为v,则块指针速度为2v

相遇时,两个指针经历的时间都为t, 慢指针移动距离为(m+n),快指针移动距离比慢指针多了环周距离,所以为(m+n+r)

因此根据速度时间距离公式得到两个公式

慢指针:v * t = m + n

快指针:2 * v * t = m + n + r

两个公式可以得到: m + n = r

m = n - r

此时使得两个指针速度相同,一个从起点开始移动,一个从相遇点开始移动。当第一个指针移动了m的距离,到达环首节点;另一个则移动了相同的距离(n - r),从图中看,n - r也刚好是环首位置。则两者相遇的位置就是环首的位置。

文章来源:https://blog.csdn.net/lanseliuxing/article/details/135456457
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。