首页 > 编程语言 > 详细

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

时间:2015-05-07 00:29:14      阅读:298      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!