思路:
* 定义从头结点到环入口节点的距离为x
从环入口出发到第一次相遇点的距离为y
从相遇点出发到第一次相遇点的距离为z
* 定义 快指针每次走两格,慢指针每次走1格
* slow第一次相遇走的距离 = x + y
fast第一次相遇走的距离 = x + n(y+z) + y
由2slow = fast
2(x + y) = x + n(y + z) + y
x + y = n(y + z)
因为小学追及问题快追慢,肯定大于一圈了,这个可以在图上自己画画,因此n大于等于1
x + y = (n-1)(y+z) + y + z
x = (n-1)(y+z) + y
这里(y+z)就是环的距离
因此得出x的距离 就是几倍环的距离 加上y的距离,而x的距离即为此题要的结果
即让两个指针分别从头结点和相遇点开始走,相遇的时候即为入口到环口的位置
* 解题步骤:
1 找出第一相遇点的位置
2 定义两个指针 分别从头结点和相遇点开始走,相遇的时候即为入口到环口的位置