Что бы я сделал, это:
Пример:
val numbers = listOf(5, 2, 8, 12, 4, 9, 0)
val target = 29
val n = 3
val result = numbers.sortedDescending().take(n).sum() >= target
println(result) // true if target is <= 29, false otherwise
Обратите внимание, что этот подход использует O(n * log(n))
, т. е. самая медленная операция — сортировка. Кроме того, этот подход будет работать, даже если numbers
содержит меньше n
элементов.
Вероятно, вам следует попробовать это:
private fun hasLargerSum(compareTo: Int, n: Int, list: List<Int>): Boolean =
list.sorted()
.takeLast(n)
.sum() >= compareTo
в этом случае он возьмет N элементов списка, отсортированных по возрастанию, просуммирует их и сравнит с нужным вам числом.
Ваше здоровье!
вам нужно вернуть фактический список элементов, которые производят значение или само значение?