快慢指针问题
比如这种链表快慢指针题目
判断是否有环,如果有环,怎么计算到环的入口呢?
判断是否有环,快慢指针是否能相遇就可以知道了。现在我们假设这个链表存在环,求环的入口。
如下图:

若b的速度是a的两倍,a和b同时从起点出发,绕环顺时针跑

如果慢指针a刚进入环的时候,快指针b应该已经在环的前面了。而且由于b的速度是a的两倍,所以Oa‘的距离等于a’b‘的距离。

现在我们不考虑上图a’和b’的距离(这个距离等于链头到环入口的距离Oa‘)。假设a和b都是在环上,并且在同一个原定O上顺时针,分析他们的相遇点的情形,如下

总结
如果遇到一些复杂的问题,我们可以先考虑它的简单情形,然后再考虑让这个简单的情形,如何迁移到复杂的问题。或者把复杂的问题,抛开一些变量因素,进行单独枚举情形到结果。
当慢指针a和快指针b相遇后。再用另外一个指针从链头跑,并且都是跑1步,慢指针也是跑1步,这样他们到环入口的距离是相等的,所以就会在环的入口相遇。
不用公式,通过枚举理解它,为什么当相遇后,用一个指针从链头和相遇点,以1步的速度同时向前,慢指针和链头为起点的指针就会相遇在环的入口。