https://leetcode.com/problems/minimum-subsequence-in-non-increasing-order/description/ | Easy |
---|
Дан массив целых чисел nums. Необходимо найти подпоследовательность массива, сумма элементов которой строго больше суммы оставшихся элементов, и при этом подпоследовательность должна быть минимальной по длине и содержать элементы в неубывающем порядке (от большего к меньшему). Вернуть эту подпоследовательность.
fun minSubsequence(nums: IntArray): List<Int> {
// Сортируем массив в порядке убывания
val sorted = nums.sortedDescending()
val totalSum = nums.sum()
var currentSum = 0
val result = mutableListOf<Int>()
// Добавляем элементы, пока сумма подпоследовательности не станет больше половины общей суммы
for (num in sorted) {
currentSum += num
result.add(num)
if (currentSum > totalSum - currentSum) {
break
}
}
return result
}