单链表之判断一个单链表中是否有环
2015-10-19 12:39
357 查看
判断一个单链表中是否有环:
/** * 判断一个单链表中是否有环 这里也是用到两个指针。如果一个链表中有环,也就是说用一个指针去遍历,是永远走不到头的。 * 因此,我们可以用两个指针去遍历,一个指针一次走两步 ,一个指针一次走一步,如果有环,两个指针肯定会在环中相遇。时间复杂度为O(n) */ public static boolean hasCycle(Node head) { // 判空是首先应该考虑的问题 if (head == null) return false; Node fast = head; // 快指针每次前进两步 Node slow = head; // 慢指针每次前进一步 while (fast != null && fast.next != null) { fast = fast.next.next; slow = slow.next; // 每移动一次都要进行比较,直到快指针等于满指针为止。 if (fast == slow) { // 相遇,存在环 return true; } } return false; }
相关文章推荐
- oracle-sql-union用法
- 日报2015/10/19(第一行代码读书笔记)
- ubuntu 14.04 安装java8
- 【C++】枚举量注意
- Android DownloadManager下载进度查询(系列3)
- 数据库笔试题
- 黑马程序员——简单数据存储
- ROC曲线
- Ubuntu上安装Node.js
- 黑马程序员——Java集合
- 随手记UIKit Dynamics
- JSP中正则表达式用法实例
- 我始终相信努力奋斗的意义
- 四大机器学习降维算法:PCA、LDA、LLE、Laplacian Eigenmaps
- SYSAUX表空间过大处理
- Apache 、PHP的安装
- 单源最短路径问题
- 谁先吃苹果
- “==”与equals的联系与区别
- 权限设计,以及使用优秀的权限框架shiro整合SpringMVC