Floyd's cycle detection 使用两个以不同速度移动的指针在序列(如链表)中寻找循环。如果循环存在,快指针最终会追上并与慢指针相遇。它使用 O(1) 额外空间。
思路
将 slow 指针向前移动一步,将 fast 指针向前移动两步。在循环中,间距每步减少一个,所以它们必然会碰撞;不存在循环时,快指针到达末尾。
示例
python
():
slow = fast = head
fast fast.:
slow = slow.
fast = fast..
slow fast:
