就像您可以键入的列表:
public Iterable<Integer> findClosestNumbers(int givenValue, Iterable<Integer> numbers, int n){
Iterable<Integer> closestNumbers;
int closest = numbers.stream()
.min(Comparator.comparingInt(i -> Math.abs(i - value)))
.orElseThrow(() -> new NoSuchElementException("No value present"));
return closestNumbers;
Like value:6且n=2则结果应返回可迭代的{4,5}
如何使用尽可能短的Iterable来写这个?我无法更改参数
如果需要n
最近值的集合,则需要对结果进行排序和切片:
public Iterable<Integer> findClosestNumbers(int givenValue,
Iterable<Integer> numbers, int n) {
return StreamSupport.stream(numbers.spliterator(), false)
.sorted(Comparator.comparingInt(i -> Math.abs(i - givenValue)))
.limit(n)
.collect(Collectors.toList());
}
这将按照与GivenValue
的距离的升序返回N
(或更少)数字。
问题内容: 给定一个整数列表,我想找到哪个数字与我在输入中提供的数字最接近: 有什么快速的方法可以做到这一点吗? 问题答案: 如果不确定列表是否已排序,则可以使用内置函数,查找与指定数字之间的最小距离的元素。 请注意,它也可用于带有int键的字典,例如。此方法花费O(n)时间。 如果列表已经排序,或者您可以只对数组进行一次排序,请使用@Lauritz答案中所示的二等分方法,该方法只需要O(logn
给定一个整数列表,我想找出哪个数字最接近我在输入中给出的一个数字: 有什么快速的方法可以做到这一点吗?
我想计算最接近数组平均数的数字,我已经计算完平均数,但我不知道如何找到最接近平均数的数字。 }
问题内容: 我想知道是否有可能找到一个最接近的元素的元素 ,是不是 在那里。 例如,如果我们具有[1,3,6,7]值,并且正在寻找最接近4的元素,则它应返回3,因为3是数组中的最大数字,小于4。 我希望这是有道理的,因为英语不是我的母语。 问题答案: 如果数组已排序,则可以在以下位置进行修改的二进制搜索:
我正在尝试自动查找一个数字与另一个数字的最接近因子; 示例: 700到30的最接近因子是28(30不等于700,但28等于700)。 一个显而易见的解决方案就是得到700的所有因子,并做一个简单的距离计算,找到离30最近的因子,但这似乎是低效的。 另一种解决方案是找到所有基本质因数,例如: 将这些数字相乘得到所有的组合,从而找到最接近的。 我正在尝试对其进行编程,使其自动化。有更好的解决方案吗?
问题内容: 说我有一个清单。我想找到3个最接近的数字,例如6.5。然后返回的值将是。 在python中找到一个最接近的数字并不是那么棘手,可以使用 但是我试图不绕这个循环找到k个最接近的数字。有pythonic方法可以完成上述任务吗? 问题答案: 简短的答案 该 heapq.nsmallest() 函数将整齐,有效地做到这一点: 本质上是这样说的:“给我三个与 6.5 绝对差值最小的输入值”。 算