簡體   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