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

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

时间:2015-05-12 15:47:01      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:指针   lintcode   leetcode   九章算法   面试题   

九章算法官网-原文网址

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


题目

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

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


解答

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

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


面试官角度

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

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

标签:指针   lintcode   leetcode   九章算法   面试题   

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

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