141. Linked List Cycle

Leetcode link

题目简介

/**
 * @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
};

results matching ""

    No results matching ""