|
|
moophis 发表于 2013-3-2 10:50 ![]()
看了答案以后写的,这个解法之前确实想不到,能给个证明吗?
https://github.com/moophis/careercup/blob/ ...
如果你是通过两个指针来做的话,一个简单的证明可以这样来想:
fast指针速度为2, slow指针速度为1, 那么当两个指针相遇的时候,假设时间为t,那么2*t-1*t=n*len, i.e. t=n*len, 其中len为环的长度,也就是说slow指针走的距离为环的长度的n倍。相遇必定是在环内的某一个nodeX上,那么从head到这个nodeX相距的长度就是这个环的长度。这个时候,一个指针从head重新走,一个指针从相遇nodeX的下一个node开始走,当再次相遇时,肯定是环的交点,因为从交点以后,到走完一个环的距离是想的相等的。
不知道我说清楚没,如果你需要严格的数学证明也是可以的 |
|