码迷,mamicode.com
首页 > 编程语言 > 详细

算法实现回顾2——链表环

时间:2015-05-07 00:30:45      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

链表找环最经典的就是快慢指针。而今天的主角也是它了。

快慢指针的思路就是,同时起跑的乌龟和兔子,若赛道无环,则永不相遇,反之则会相遇。

那么我们假定兔子速度是乌龟的2倍。

乌龟和兔子在环中某点相遇,有以下等式:2*x=x+n*k 其中x是乌龟走过的路程,n是兔子绕的圈数,k是圈长。

等式变换 x=n*k,理解就是乌龟走的路程刚好够绕n圈环,而这个路程也是从起点到当前位置的路程。

那么,让另一只乌龟此刻从起点出发,2只乌龟各自继续前进。

根据等式,又会在原先的那点相遇。再想,两者速度相同,那么两者在首次相遇后就一直同步前进。

两者相遇点必然是环的起点,不然两者速度相同且方向相同,必然不可能相遇。

算法实现回顾2——链表环

标签:

原文地址:http://www.cnblogs.com/Cnil/p/4477152.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!