假设从头结点到环形入口节点 的节点数为x。环形入口节点到 fast指针与slow指针相遇节点 节点数为y。从相遇节点 再到环形入口节点节点数为 z。如图所示:
当两指针相遇时:
slow指针走过的节点数为: x + y
fast指针走过的节点数:x + y + n (y + z)
同时因为fast指针是一步走两个节点,slow指针一步走一个节点, 所以:(x + y) * 2 = x + y + n (y + z)
两边消掉一个(x+y): x + y = n (y + z)
则:x = n (y + z) - y ,
再从n(y+z)中提出一个 (y+zÿ