141. Linked List Cycle - Easy

前往題目

之前寫過,照搬一下

想法

  • 這題之前寫過,這次還是看提示才能想起來
  • 沒什麼困難點,只要知道用快慢指針就行

思路

  1. 新建快慢指針
  2. 慢指針一次走一個node,快指針一次走兩個node
  3. 如果有cycle一定會碰在一起

Code

public boolean hasCycle(ListNode head) {
    // When only 1 node of the list
    if(head.next == null){
        return false;
    }

    // Init. 2 pointers
    ListNode slow = head, fast = head;

    // Iterate throuhg the listnode
    while(slow != null || fast.next != null){
        slow = slow.next;
        fast = fast.next.next;

        if(slow == fast){
            return true;
        }
    }

    return false;
}

2023/12/16

  • 一下就寫出來,但是while的條件一直出錯
public class Solution {
    public boolean hasCycle(ListNode head) {
        ListNode slow = head, fast = head;

        while (fast != null && fast.next != null) {
            slow = slow.next;
            fast = fast.next.next;
            if (slow == fast) return true;
        }

        return false;
    }
}

141. Linked List Cycle - Easy
https://f88083.github.io/2023/12/16/141-Linked-List-Cycle-Easy/
作者
Simon Lai
發布於
2023年12月16日
許可協議