Java - 在数组列表中找到最接近的值(更高)

时间:2016-02-16 10:42:57

标签: java

大家好,我想知道是否有可能在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;
}

1 个答案:

答案 0 :(得分:1)

请在寻求帮助之前添加一些尝试代码。

这里有一些让你入门的食物(如果数组没有排序):

1)遍历数组

2)检查您正在查看的索引是否高于您正在使用的值

3)计算它们之间的差异并将其保存在临时变量中。

4)重复

5)检查您正在查看的新索引的差异是否小于之前的(临时)

6)保存最小差异

但是,如果对数组进行了排序,请查看二进制搜索,并考虑如何使用上述方法来提高效率。