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

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