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 }
}
- 回到 leetcode 列表