程序员面试金典第二章:链表(6) 链表环路
来源:互联网 发布:淘宝魔改坊 编辑:程序博客网 时间:2024/06/05 22:31
1.1 问题描述
给定一个链表,判断该链表是否有环路,如果有,就返回链表环路开始的结点,如果没有,返回nullptr
1.2 解题思路
思路1:判断链表是否有环路,通常采用快慢指针法,所谓快慢指针法的意思是,有两个指针,一个一次走2步,这个是快指针,另一个一次走1步,这个是慢指针。假设链表有环,那么快指针一定可以追上慢指针。 判断完有环,那么重新声明一个指向开头的指针,与慢指针一样,每次只走一步,它们相遇的地方就是环路的起点。具体解释见http://www.cnblogs.com/xudong-bupt/p/3667729.html 时间复杂度O(n),空间复杂度O(1)
class ListLoop {public: ListNode * isExitsLoop(ListNode * pHead) { if(pHead == nullptr || pHead ->next == nullptr) return false; ListNode * pFast = pHead; ListNode * pSlow = pHead; while(pFast != nullptr && pFast ->next != nullptr) { pFast = pFast ->next ->next; pSlow = pSlow ->next; if(pFast == pSlow) { ListNode * p = pHead; while(p != pSlow) { p = p ->next; pSlow = pSlow ->next; } return p; } } return nullptr; }};
0 0
- 程序员面试金典第二章:链表(6) 链表环路
- 程序员面试金典: 9.2链表 2.6给定有环链表,实现算法返回环路的开头节点
- 程序员面试金典第二章:链表(4) 链表分割
- 程序员面试金典第二章:链表(7)回文链表
- 程序员面试经典--链表环路检测与入口结点返回
- 程序员面试金典第二章:链表(2) 链表中倒数第k个结点
- 程序员面试金典第二章:链表(3) 链表中倒数第k个结点
- 程序员面试金典第二章:链表(5) 链式A+B
- 《程序员面试金典》链表分割
- 《程序员面试金典》回文链表
- 《程序员面试金典》--分割链表
- 《程序员面试金典》--链表相加
- 【程序员面试金典】链表分割
- 【程序员面试金典】回文链表
- [程序员面试金典]-链表分割
- [程序员面试金典]-链表反转
- 程序员面试金典(7)判断回文链表
- 判断链表是否存在环路
- Android基础之Intent Flag案例分析
- struts.xml的笔记
- 总结String,StringBuilder,StringBuffer的区别以及注意事项
- Nginx+Tomcat基于Docker的搭建
- Tensorflow的Bazel编程(一)
- 程序员面试金典第二章:链表(6) 链表环路
- 如何把Web工程部署到Tomcat的根目录webapps的ROOT下
- JQ判断上下滑动
- 蛮不错的GitHub上传教程 mark下
- Caffe安装步骤及mnist数据集测试
- dll库总结1
- 【ITOO】---关于List的remove操作
- 织梦DEDE模板调用标签大全
- 开发应用识别软件遇到的一些windows编程技能