相同的时间内,快指针的旅程是慢指针的两倍
当他们相遇时,快指针已经在环里走了n圈,但是慢指针是第一次进环
相遇时有
2 ( a + b ) = a + n ( b + c ) + b a = ( n − 1 ) b + n c a = ( n − 1 ) ( b + c ) + c 2(a+b)=a+n(b+c)+b\\ a=(n-1)b+nc\\ a=(n-1)(b+c)+c 2(a+b)=a+n(b+c)+ba=(n−1)b+nca=(n−1)(b+c)+c
在这一点,我们能得到两段相等的间隔,如果有点从开头走完a,相当于一点走完c并在环里走几圈,如果有两个速度为1的点这样走,它们末了肯定会相遇,而且就是在环的入口处相遇
实现代码: