[LeetCode] 141. Linked List Cycle

Posted aaronliu1991

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] 141. Linked List Cycle相关的知识,希望对你有一定的参考价值。

单链表中的环。题意很简单,找出链表中是否有环。例子,这样就是有环的。

技术图片

 

 

 

思路是用快慢指针,慢指针每走一步,快指针走两步。如果快慢指针在某个地方相遇了,说明有环;否则快指针就会遍历到链表尾部从而会退出循环。

时间O(n)

空间O(1)

 1 /**
 2  * @param {ListNode} head
 3  * @return {boolean}
 4  */
 5 var hasCycle = function(head) {
 6     // corner case
 7     if (head === null || head.next === null) {
 8         return false;
 9     }
10 
11     // normal case
12     let slow = head;
13     let fast = head;
14     while (fast !== null && fast.next !== null) {
15         slow = slow.next;
16         fast = fast.next.next;
17         if (slow === fast) {
18             return true;
19         }
20     }
21     return false;
22 };

 

以上是关于[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, 142. Linked List Cycle I+II

[Leetcode]141. Linked List Cycle