Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-在数组列表中查找最接近的值(更高)_Java - Fatal编程技术网

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

Java-在数组列表中查找最接近的值(更高),java,Java,大家好,我想知道是否有可能在arraylist中找到最接近的值,这将返回更高的值 示例:arraylist为[3,7,12,19]如果我的值为8,如何获得最接近(更大)的值12 嗨,伙计们,谢谢你们的回复,我在询问逻辑或理解,请不要误解我在等待答案!我已经尝试过这个函数,但我想要的是得到更高(更大)的值,它更接近。这只是给我最接近的值,而不是更大的最近值 public int nearestValue(int value, ArrayList<Integer>List) {

大家好,我想知道是否有可能在arraylist中找到最接近的值,这将返回更高的值

示例:arraylist为[3,7,12,19]如果我的值为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;
}
public int-nearestValue(int-value,ArrayListList)
{
int-lo=0;
int hi=List.size()-1;
int lastValue=0;
while(lolastValue)
{
lo=中间+1;
}
其他的
{
返回最后一个值;
}
}
返回最后一个值;
}

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

下面是一些让您开始思考的东西(如果数组未排序):

1) 遍历数组

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

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

4) 重复

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

6) 保存最小的差异


但是,如果数组已排序,请查看二进制搜索并思考如何使用上述方法使其更高效。

查看
数组。binarySearch
是的,这是可能的。你们试过什么?堆栈不是一种资源,你们可以在这里要求做你们的工作。你自己试试,把代码写下来,这里面有什么问题。这里有一个可能的算法:按降序排列
ArrayList
,扫描列表,直到找到一个小于数字的值,然后返回上一个值。为什么要保存差异?问题中没有要求它。这是如何检查它是否确实是最接近的“最高值”。您需要差分最小的整数。