怎么找到链表环的入口


https://leetcode-cn.com/problems/find-the-duplicate-number/solution/kuai-man-zhi-zhen-de-jie-shi-cong-damien_undoxie-d/

看了半天 记录一下

首先   设置一个快慢指针  快指针  fast  一次走两步   慢指针  slow  一次走一步

如果链表有环   那么快慢指针一定会在链表中相遇

相遇时   fast指针 走了 2n 步  , slow 指针走了 n步

设 环的 长度为 c  那么  n%c  == 0

再设  起点  到 环的距离 为 m  这里最巧妙

slow指针在环中走过的距离是 n-m

因为 n%c == 0

所以slow指针再前进 m 步 刚好到环的入口

再指针上体现为   快慢指针前进    快慢指针相遇   指针起点为新指针 finder

finder指针 和slow指针 同时前进  知道两者相遇   这个点就是 环的入口