gpt4 book ai didi

kotlin - 在集合中查找最接近/最接近的值但不超过它

转载 作者:行者123 更新时间:2023-12-05 01:28:11 26 4
gpt4 key购买 nike

我有一个集合,想要返回最接近某个固定值但不超过固定值的值。例如,如果我的收藏看起来像这样:

val numbers = mutableListOf(23, 12, 64, 47, 36, 55)

我的目标固定值为 35,从集合返回的值为 23。以下是一些其他示例:

Target -> Returned
29 -> 23
5 -> null (there is no value less than 12, so null is returned)
70 -> 64

我可以使用一些 Collection 函数来提供预期的结果吗?注意:数字列表未排序。在真实的应用程序中,这些不是数字而是包含整数属性的对象,但如果这有助于解决方案,我也可以先根据该值对集合进行排序。

最佳答案

您可以使用fold 函数将最接近的值保存在累加器中。例如,

val numbers = mutableListOf(23, 12, 64, 47, 36, 55)

val target = 35

val answer = numbers.fold(null){acc: Int?, num ->
if(num <= target && (acc == null || num > acc)) num
else acc
}

如果你想在目标匹配列表中的值之一时打破循环,你可以有以下内容

val numbers = mutableListOf(23, 12, 64, 47, 36, 55)
val target = 35

fun MutableList<Int>.findClosest(input: Int) = fold(null) { acc: Int?, num ->
val closest = if (num <= input && (acc == null || num > acc)) num else acc
if (closest == input) return@findClosest closest else return@fold closest
}

val answer = numbers.findClosest(target)

一旦目标匹配特定值,内部函数中的 return 关键字将从 findClosest 函数返回

关于kotlin - 在集合中查找最接近/最接近的值但不超过它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68862865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com