转自https://blog.csdn.net/xy010902100449/article/details/48995255?locationNum=8&fps=1
写的很详细,就不自己写了
简单记录一下分析:
链表头是X,环的第一个节点是Y,slow和fast第一次的交点是Z。各段的长度分别是a,b,c,如图所示。
假设快指针一共走了k圈,因为fast是slow的2倍,则有
2*(a+b) = a+b+k*(b+c) =====》a = (k-1)*(b+c)+c
由上面这个公式可以知道,一个指针从x点出发,另一个指针同时从z点出发,只要它们速度一样必然是可以同时到y点的。