是否可以检查列表中n个项目的任意组合是否大于或等于一个数字?以及如何?
答案 0 :(得分:2)
我要做的是:
一个例子是:
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
个元素,这种方法也能有效
答案 1 :(得分:1)
您可能应该尝试以下方法:
private fun hasLargerSum(compareTo: Int, n: Int, list: List<Int>): Boolean =
list.sorted()
.takeLast(n)
.sum() >= compareTo
在这种情况下,它将以升序排序的N个元素,将其求和并与您所需的数字进行比较。
干杯!