判断单项链表是否存在环
2015-05-15 21:30
204 查看
这个问题是之前去趋势科技面试的时候面试官问的一个问题,当时我没回答的上来,现在在网上找到了解答,现在特在此分享。
最简单的思路是遍历链表,然后针对每一个节点判断在之前的节点中是否出现过,也就是使用一种O(n^2)的算法
但是这样的方法显然不是最优的,我们要开始考虑存在环路的单向链表的特性,他是没有结束节点的,这样我们可以确定一个程序结束条件,就是
只要找到一个结束节点,那么单向链表就是没有环的,剩下的问题就是怎么确定环的存在,我们可以定义两个指针,他们以不同的步调遍历单项链表,
第一个指针步长为1,第二个指针的步长为2,如果第二个指针遇到null 那么就没有环,如果第二个指针遇上第一个指针,那么这个单项链表就存在换
最后时间复杂度锁定在 O(3N),不存在额外的内存开销
参考网页http://www.chinaunix.net/old_jh/23/410637.html
最简单的思路是遍历链表,然后针对每一个节点判断在之前的节点中是否出现过,也就是使用一种O(n^2)的算法
但是这样的方法显然不是最优的,我们要开始考虑存在环路的单向链表的特性,他是没有结束节点的,这样我们可以确定一个程序结束条件,就是
只要找到一个结束节点,那么单向链表就是没有环的,剩下的问题就是怎么确定环的存在,我们可以定义两个指针,他们以不同的步调遍历单项链表,
第一个指针步长为1,第二个指针的步长为2,如果第二个指针遇到null 那么就没有环,如果第二个指针遇上第一个指针,那么这个单项链表就存在换
最后时间复杂度锁定在 O(3N),不存在额外的内存开销
参考网页http://www.chinaunix.net/old_jh/23/410637.html
相关文章推荐
- 单链表逆序、判断单链表中是否存在环、两个不存在环的链表是否相交
- 判断单链表是否存在环,判断两个链表是否相交问题详解
- 【题目13】判断一个链表是否存在环
- 判断单链表是否存在环,判断两个链表是否相交问题详解
- leetcode 判断简单链表是否存在循环
- 判断单链表是否存在环,判断两个链表是否相交问题详解
- 判断单链表是否存在环,判断两个链表是否相交问题详解
- 判断单链表是否存在环,寻找单链表环的入口
- 判断单链表是否存在环,判断两个链表是否相交问题详解
- 判断单链表是否存在环,判断两个链表是否相交问题详解(转载)
- 判断单链表是否存在环,判断两个链表是否相交问题详解(zz)
- 判断单链表是否存在环,判断两个链表是否相交
- [转]判断单链表是否存在环,判断两个链表是否相交问题详解
- 如何判断单链表是否存在环 & 判断两链表是否相交
- 判断单链表是否存在环,判断两个链表是否相交问题详解
- 判断单链表是否存在环,判断两个链表是否相交问题详解(转载)
- 编程之美3.6 判断单链表是否存在环,判断两个链表是否相交问题详解
- 判断两个单向链表是否存在环
- 判断单链表是否存在环,判断两个链表是否相交问题详解
- 笔试笔记————判断单向链表是否存在循环