大家好,我想知道是否有可能在arraylist中找到最接近的值,这将返回更高的值。
示例:[3,7,12,19]的arraylist如果我的值为8,我怎么能得到最接近的(更大)值12?
嗨大家好,谢谢你的回复,我要求逻辑或理解请不要错,我等着回答!我试过这个功能,但我想要的是获得更接近的更高(更大)的值。这只是给我最接近但不是最大的最接近的值
public int nearestValue(int value, ArrayList<Integer>List)
{
int lo = 0;
int hi = List.size()-1;
int lastValue = 0;
while(lo <= hi)
{
int mid = (lo + hi) /2;
lastValue = List.get(mid);
if (value < lastValue)
{
hi = mid - 1;
}
else if (value > lastValue)
{
lo = mid + 1;
}
else
{
return lastValue;
}
}
return lastValue;
}
答案 0 :(得分:1)
请在寻求帮助之前添加一些尝试代码。
这里有一些让你入门的食物(如果数组没有排序):
1)遍历数组
2)检查您正在查看的索引是否高于您正在使用的值
3)计算它们之间的差异并将其保存在临时变量中。
4)重复
5)检查您正在查看的新索引的差异是否小于之前的(临时)
6)保存最小差异
但是,如果对数组进行了排序,请查看二进制搜索,并考虑如何使用上述方法来提高效率。