| https://leetcode.com/problems/minimum-subsequence-in-non-increasing-order/description/ | Easy |
|---|
class Solution {
fun minSubsequence(nums: IntArray): List<Int> {
val cnt = IntArray(101)
var sum = 0
for (v in nums) { cnt[v]++; sum += v }
val res = ArrayList<Int>()
var acc = 0
var v = 100
while (acc <= sum - acc) {
while (v > 0 && cnt[v] == 0) v--
if (v == 0) break
res.add(v)
cnt[v]--
acc += v
}
while (acc <= sum - acc) {
while (v > 0 && cnt[v] == 0) v--
res.add(v)
cnt[v]--
acc += v
}
return res
}
}