嘿哟,
我实际上正在尝试实现一个以整数作为输入的函数。 我还有一个上升整数数组。
现在我尝试找到最接近我的单个整数的较低和最高的数字。
我想将其作为数组返回,但我只找到了一种解决方案来找到与给定输入最接近的数字。
public int getClosestTimeValue(int time) {
int nearest = -1;
int bestDistanceFoundYet = Integer.getInteger(null);
int[] array = null;
// We iterate on the array...
for (int i = 0; i < array.length; i++) {
// if we found the desired number, we return it.
if (array[i] == time) {
return array[i];
} else {
int d = Math.abs(time - array[i]);
if (d < bestDistanceFoundYet) {
nearest = array[i];
}
}
}
return nearest;
}
有谁知道如何用java解决这个问题吗?
谢谢你,卢卡斯
最佳答案
如果不需要直接使用数组,那么可以使用 NavigableSet以及天花板()/地板()方法来获取集合中最近的较大/较小元素。示例:
NavigableSet<Integer> values = new TreeSet<Integer>();
for (int x : array) { values.add(x); }
int lower = values.floor(time);
int higher = values.ceiling(time);
如果您需要使用数组(家庭作业?),那么请找到有关二分搜索的良好引用。
关于java - 查找数组中最接近的较高和较低数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24118437/