在Floyd算法中,每个人使用一个每次操作移动到下一个节点的“慢指针”,和一个移动到next.next节点的“快速指针”。当它们相遇时,我们将“慢速指针”移动到 List 的开头,然后将两者移动(每次移动一个节点),直到我们再次到达公共节点。这个节点将是循环的开始。
这适用于像“slow=1”和“fast=2”这样的速度,但是我们可以用“fast>2”做同样的事情吗?
这和这个问题是一样的:
为什么在链表中查找循环时将指针增加 2,为什么不是 3、4、5?
简短的回答:你可以用 fast>2 来做,但它实际上会使总运行时间变慢,所以它并不是真正有益的。
您可以查看链接以获取详细证明。