快慢指针可以用来检测链表是否有环,问题是为什么快指针一定会追上慢指针呢?
从数学的角度,当快指针步长为2时,慢指针走完一圈,此时快指针走完2圈,必定在第一个节点相遇
以此类推,当快指针步长为N时,慢指针走完一圈,此时快指针走完N圈,必定会在第一个节点相遇,但是初次遇见未必是在第一个节点
有意思的是从物理角度,当两个物体速度不同时,将其中慢指针看为静止,由于起始位置相同,就相当于快指针第二次到达起始位置的时候相遇,注必须是起始位置相同,不然快指针在奇偶数不同的情况下,可能每次会直接跳跃一些位置,造成不能相遇
因此,快指针一定会与慢指针相遇