[算法]判断一个链表是否有环
2016-05-06 21:05
323 查看
如何判断一个链表是否有环
解题思路:定义两个指针fast和slow,其中fast是快指针,slow是慢指针,二者的初始值都指向链表头,slow每前进一步,fast每次前进两步,两个指针同时向前移动,快指针每移动一次都要和慢指针比较,直到当快指针等于慢指针为止,就证明这个链表是带环的单向链表,否则,证明这个链表是不带环的循环链表(fast先行到达尾部为NULL,则为无环链表)。
代码实现如下:
public boolean isLoop(Node head){ Node fast = head; Node slow = head; if (fast == null) { return false; } while (fast != null && fast.next != null) { fast = fast.next.next; slow = slow.next; if(fast == slow){ return true; } } return !(fast == null || fast.next == null); }
Github源码地址:
https://github.com/GeniusVJR/Algorithm-and-Data-Structure/tree/master/判断一个链表是否有环
相关文章推荐
- 两个桟实现一个队列
- Qt 学习笔记2 摘自《Qt 学习之路 2》
- 怎么让adb shell直接进入root?
- LaTeX排版Book模板
- RedHat设置SSH免密码登录
- 渣渣写LEETCODE——258. Add Digits
- C++基础知识——二维数组做函数参数
- INotifyPropertyChanged接口
- 道德经--老子
- Dubbo源码分析(四):dubbo中bean的加载
- uva10635(LCS转换为求LIS)
- [svc][op]SSH公钥认证+优化
- Java 8从永久代到metaspace
- Common used English
- HDU 专题分类
- shell---消除文件后缀四种方法
- Object Detection with DPM
- nyoj55懒省事的小明(STL优先队列)
- 本文建模系列值三:LDA感悟
- poj 1321棋盘问题(补充)