141. Linked List Cycle
题目简介
/**
* @param {ListNode} head
* @return {boolean}
*/
题目给我们一个链表头 head,要求我们判断该链表是否成环
解题思路
题目要求我们想出一个空间复杂度为 O(1) 的解法,所以我们要用到快慢指针
快指针 fast 一次前进两步;慢指针 slow 一次前进一步
我们让快慢指针同时从 head 出发,直到两者相遇(有环)或者快指针先碰到链表尾的 null(无环)
Javascript
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @return {boolean}
*/
var hasCycle = function (head) {
let slow = head
let fast = head
while(fast && fast.next) {
fast = fast.next.next
slow = slow.next
if(fast === slow) {
return true
}
}
return false
};