leetcode 141. Linked List Cycle
来源:互联网 发布:剑灵天女捏脸图文数据 编辑:程序博客网 时间:2024/06/05 11:03
Discription
Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
My solution:None
- 检测链表中有无cycle,可以用DPS方法,对每个node做访问过标记{0,1,2},但这需要额外空间.
Discuss
大神采用的方式是两个指针,在整个链表图上跑,一个fast,一个slow.
注意到因为有环的存在,在遍历程中,必然会掉入循环. 最终fast和slow在圈里一直跑动,fast会将slow套圈,也就是再次相遇!!
这与初中做的数学题问何时套圈的思路一样,考虑的应该是:场景设定为环,有怎样的区别于直线的特征?
很显然就是旧地重游,可以用不同速度区分
总之,这个转换的思路很巧妙!
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ /** use faster and lower runner solution. (2 pointers) the faster one move 2 steps, and slower one move only one step. if there's a circle, the faster one will finally "catch" the slower one. (the distance between these 2 pointers will decrease one every time.) if there's no circle, the faster runner will reach the end of linked list. (NULL) */class Solution {public: bool hasCycle(ListNode *head) { if(head == NULL || head -> next == NULL) return false; ListNode *fast = head; ListNode *slow = head; while(fast -> next && fast -> next -> next){ fast = fast -> next -> next; slow = slow -> next; if(fast == slow) return true; } return false; }};
Reference
- leetcode 141
阅读全文
0 0
- [LeetCode]141.Linked List Cycle
- LeetCode 141. Linked List Cycle
- [Leetcode] 141. Linked List Cycle
- LeetCode 141. Linked List Cycle
- [leetcode] 141.Linked List Cycle
- leetcode 141.Linked List Cycle
- [leetcode] 141. Linked List Cycle
- [LeetCode]141. Linked List Cycle
- 141. Linked List Cycle LeetCode
- [LeetCode]141. Linked List Cycle
- LeetCode 141. Linked List Cycle
- LeetCode *** 141. Linked List Cycle
- [LeetCode]141. Linked List Cycle
- LeetCode 141. Linked List Cycle
- [leetcode]141. Linked List Cycle
- leetcode-141. Linked List Cycle
- 141.[LeetCode]Linked List Cycle
- 【leetcode】141. Linked List Cycle
- Android系统版本与AspectJ
- 谁获得了最高奖学金
- Java 随机生成50个正整数,存放到数组,求出总和,平均值,最大值,最小值
- Android入门
- 代码自动生成(二)
- leetcode 141. Linked List Cycle
- Android简单绘图
- (poj 2377)Kruskal算法 最大生成树
- 南阳oj 题目115 城市平乱 迪杰斯特拉
- Nginx入门介绍-安装与使用
- mysql中insert into select from的使用
- 不用循环数组求和---京东金融面试
- String与StringBuilder以及StringBuffer的比较
- 基于STM32F103的超声波测距