Recca Chao 的 gitHub page

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

View on GitHub

Kotlin Leetcode - 1299. Replace Elements with Greatest Element on Right Side

題目連接

class Solution {
    fun replaceElements(arr: IntArray): IntArray {

    }
}

解題思路

這一題考的是陣列處理

基本想到的處理方式可以透過迴圈

利用 kotlin 的函數式導向寫法

可以寫成單一表達式

Kotlin 參考解答

點擊展開解答

迴圈的處理方式

class Solution {
    fun replaceElements(arr: IntArray): IntArray {
        val res = IntArray(arr.size)
        res[arr.size - 1] = -1
        for (i in arr.size - 1 downTo 1) {
            res[i - 1] = maxOf(arr[i], res[i])
        }
        return res
    }
}

函數式風格的寫法

class Solution {
    fun replaceElements(arr: IntArray): IntArray =
        arr.indices.fold(
            IntArray(arr.size)
        ) { acc, i -> acc[i] = arr.drop(i + 1).maxOrNull() ?: -1; acc }
}