【 声明:版权所有,欢迎转载。 联系信箱:yiluohuanghun@gmail.com】
前两天倩仔仔给我了一套试题让我看,整体来说感觉题都还算不错,从中随便找了两道。先看题吧!
1、怎样判断一个单链表中是都存在环路?(搜狗面试题)
两种方法:
方法一:使用p、q两个指针,p总是向前走,但q每次都从头开始走,对于每个节点,看p走的步数是否和q一样。如图,当p从6走到3时,用了6步,此时若q从head出发,则只需两步就到3,因而步数不等,出现矛盾,存在环。
方法二:使用p、q两个指针,p每次向前走一步,q每次向前走两步,若在某个时候p == q,则存在环。
2、怎样快速找到未知长度单链表的中间节点?(腾讯面试题)
方法一、先对其进行遍历,求出长度n,则中间元素就可求出。
方法二、运用快慢指针方法,一个指针每走一步另一个指针走两步,当后者走到头时,前者所指结点即为中间元素。
当然了,方法一应该是大多数人都能想到的,但是这样的公司我相信他要的肯定不是方法一了。
综上所述,快慢指针还是很有用的。
本文转自 驿落黄昏 51CTO博客,原文链接:http://blog.51cto.com/yiluohuanghun/1266231,如需转载请自行联系原作者