LeetCode/kt/house-robber-iv.kt
2025-03-17 11:20:03 +01:00

27 lines
643 B
Kotlin

class Solution {
fun minCapability(
nums: IntArray,
k: Int,
): Int {
var (min, max) = 1 to nums.max()!!
while (min < max) {
val mid = (min + max) / 2
val (_, possible) =
nums.fold(true to 0) { (canRob, robbed), reward ->
when {
canRob && reward <= mid -> false to (robbed + 1)
else -> true to robbed
}
}
when {
possible >= k -> max = mid
else -> min = mid + 1
}
}
return min
}
}