链表求环的起点–LeetCode #142. 环形链表 II
快慢指针指针法
- 快指针走的路程是慢指针的 2 倍;
- 第一次相遇时,设此时慢指针的走的路程是 x;
- 指定一个指针 p 放在链表的头部(p 每次走一步和慢指针一样)
- 如果 p 和 慢指针都再走一个 x 路程
- 那么慢指针现在到达的位置就是 2x
- p 到达 x 位置,慢指针和 p 相遇了
- 往回想一想,因为 p 和 慢指针的速度一样
- 所以在环的入口位置它们就已经相遇了
- p 和慢指针从环入口处开始重叠走了一段距离到达 x 位置