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
}