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
系列文
來都來了-涮就涮吧37
  1. 33
    #32
  2. 34
    #33
  3. 35
    #34
  4. 36
    #35
  5. 37
    #36
完整目錄
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言