快慢指针判断环起点的数学解析
2024-01-08 16:15:50
分析:
如图所示,快慢指针从起点出发,可以同时到达相遇点。
刚出发时,慢指针每次走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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!