标签:
链表找环最经典的就是快慢指针。而今天的主角也是它了。
快慢指针的思路就是,同时起跑的乌龟和兔子,若赛道无环,则永不相遇,反之则会相遇。
那么我们假定兔子速度是乌龟的2倍。
乌龟和兔子在环中某点相遇,有以下等式:2*x=x+n*k 其中x是乌龟走过的路程,n是兔子绕的圈数,k是圈长。
等式变换 x=n*k,理解就是乌龟走的路程刚好够绕n圈环,而这个路程也是从起点到当前位置的路程。
那么,让另一只乌龟此刻从起点出发,2只乌龟各自继续前进。
根据等式,又会在原先的那点相遇。再想,两者速度相同,那么两者在首次相遇后就一直同步前进。
两者相遇点必然是环的起点,不然两者速度相同且方向相同,必然不可能相遇。
标签:
原文地址:http://www.cnblogs.com/Cnil/p/4477152.html