Recca Chao 的 gitHub page

推廣網站開發,包含 Laravel 和 Kotlin 後端撰寫、自動化測試、讀書心得等。Taiwan Kotlin User Group 管理員。

View on GitHub

Kotlin Leetcode - 141. Linked List Cycle

題目連接

class Solution {
    fun hasCycle(head: ListNode?): Boolean {
        
    }
}

解題思路

本題練習的是針對 linked list 的操作

類似 [[876. Middle of the Linked List]]

我們可以使用兩個變數當作指標

其中一個指標在每次移動時,往後移動兩個元素

另一個指標在每次移動時,往後移動一個元素

這樣一來

當這兩個指標同時指向一個元素時

我們就可以確定這個 linked list 裡面包含迴圈

Kotlin 參考解答

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