iT邦幫忙

2025 iThome 鐵人賽

DAY 4
0

Linked List Cycle (LeetCode 141)

thoughts

  • 使用 Floyd’s Cycle Detection (快慢指針):
  • slow 每次走一步,fast 每次走兩步
  • 如果存在 cycle → fast 會追上 slow

Kotlin

class ListNode(var `val`: Int) {
    var next: ListNode? = null
}

class Solution {
    fun hasCycle(head: ListNode?): Boolean {
        var slow = head
        var fast = head
        while (fast?.next != null) {
            slow = slow?.next
            fast = fast.next?.next
            if (slow == fast) return true
        }
        return false
    }
}

Follow-up

  • 如果要找 cycle 的入口點?(LeetCode 142)
  • 如果只能修改節點結構,可以考慮標記 visited flag。
  • 如果記憶體有限,能否不用快慢指針?(HashSet 但 O(n) 空間)

上一篇
#15
系列文
來都來了-涮就涮吧17
  1. 13
    #12
  2. 14
    #13
  3. 15
    #14
  4. 16
    #15
  5. 17
    #16
完整目錄
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言