繁体   English   中英

如何检查列表中任何N个项目的总和是否等于或大于Kotlin中的值

[英]How do I check if sum of any N numbers of items in a list equals or greater than a value in Kotlin

是否可以检查列表中n个项目的任意组合是否大于或等于一个数字? 如何?

我要做的是:

  1. 按降序对列表进行排序
  2. 检查前N个项目的总和是否> =目标。 如果那不是真的,那么其他任何组合肯定不会成为> =目标。

一个例子是:

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个元素升序排列,求和并将其与所需数量进行比较。

干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM