Recca Chao 的 gitHub page

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

View on GitHub

Kotlin Leetcode - 876. Middle of the Linked List

題目連接

class Solution {
    fun maxArea(height: IntArray): Int {
        
    }
}

解題思路

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

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

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

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

這樣一來

當移動比較快的指標移動到 linked list 的尾端時

移動比較慢的指標剛好會移動到 linked list 的中間

Kotlin 參考解答

/**
 * Example:
 * var li = ListNode(5)
 * var v = li.`val`
 * Definition for singly-linked list.
 * class ListNode(var `val`: Int) {
 *     var next: ListNode? = null
 * }
 */
class Solution {
    fun middleNode(head: ListNode?): ListNode? {
        var fast = head
	var slow = head
	while(fast != null && fast.next != null) {
	    slow = slow?.next
	    fast = fast.next.next
        }
        return slow
    }
}