您的位置:首页 > 其它

检测链表环路引发的思考

2016-03-07 11:32 323 查看
一个小小的数学游戏引发的奇妙思路之旅!

如题:请在O(n)时间复杂度内找出链表(存在环路)中环路的起点。

解答:设定双(快慢)指针,慢指针每次向后移动一个元素,快指针每次向后移动两个元素。两指针依次向后遍历,直到相遇。相遇时,将慢指针指向头节点,将快指针设置为慢指针,继续向后遍历,直到相遇。相遇节点即为环路的起始节点。

思考:实际上,巧妙地运用了速度为两倍的追赶相遇问题:他们会在前者的对称位置相遇。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: