首页 > 编程语言 > 详细

九章算法面试题28 链表找环

时间:2015-05-12 15:46:28      阅读:260      评论:0      收藏:0      [点我收藏+]

九章算法官网-原文网址

http://www.jiuzhang.com/problem/28/


题目

初阶:给一个单链表,判断这个单链表是否存在环,如1->2->3->4->2是一个存在环的链表。要求使用O(1)的额外空间。

进阶:求出环的入口。同样要求O(1)的额外空间。


解答

初阶:用两根指针,从链表头出发,一根慢指针每次走一步,另外一根快指针每次走两步。直到他们相遇(有环)或者快指针走到NULL(无环)。

进阶:相遇之后,将一根指针挪到链表头,两根指针每次都移动一步,直到再次相遇,相遇点即为环入口。


面试官角度

快慢指针的问题并不常见,用到这个思路的问题除了链表找环以外,还有链表找中点(要求一次扫描)。这个问题属于考烂的问题,也属于我知道就知道,不知道就拉倒的问题。大家记住这个问题的答案即可。具体的分析,读者可以自行在纸上演算。

九章算法面试题28 链表找环

原文:http://blog.csdn.net/jiuzhang_ninechapter/article/details/45669067

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!