当前位置: 首页 > 面试题库 >

获得最接近数组中数字的值

桂梓
2023-03-14
问题内容

我有一系列正/负整数

int[] numbers = new int[10];
numbers[0] = 100;
numbers[1] = -34200;
numbers[2] = 3040;
numbers[3] = 400433;
numbers[4] = 500;
numbers[5] = -100;
numbers[6] = -200;
numbers[7] = 532;
numbers[8] = 6584;
numbers[9] = -945;

现在,我想针对此数组测试另一个int,并返回最接近该int的数字。

例如,如果我使用数字,490我将从数字中取回第4项500,那么做这种事情的最佳方法是什么?

int myNumber = 490;
int distance = 0;
int idx = 0;
for(int c = 0; c < numbers.length; c++){
    int cdistance = numbers[c] - myNumber;
    if(cdistance < distance){
        idx = c;
        distance = cdistance;
    }
}
int theNumber = numbers[idx];

那不行 有什么好的方法建议吗?


问题答案:
int myNumber = 490;
int distance = Math.abs(numbers[0] - myNumber);
int idx = 0;
for(int c = 1; c < numbers.length; c++){
    int cdistance = Math.abs(numbers[c] - myNumber);
    if(cdistance < distance){
        idx = c;
        distance = cdistance;
    }
}
int theNumber = numbers[idx];

始终使用要考虑的第一个元素初始化最小/最大函数。使用诸如Integer.MAX_VALUEInteger.MIN_VALUE这样的东西是获得答案的幼稚方式;如果以后再更改数据类型(糟糕,MAX_LONG而且MAX_INT有很大不同!),或者将来您想min/max
任何 数据类型编写通用方法,它都不会很好。



 类似资料:
  • 我正在尝试写一个程序,用户将把数字,我需要得到最接近的数字平均值。 那我就试着这么做; 我的问题是,当我输入数字1 12 17 23 62时,平均值是正确的:23.0,但输出是这样的: 为什么62号后不传递给else if语句? 多谢 所有代码

  • 问题内容: 给定一个整数列表,我想找到哪个数字与我在输入中提供的数字最接近: 有什么快速的方法可以做到这一点吗? 问题答案: 如果不确定列表是否已排序,则可以使用内置函数,查找与指定数字之间的最小距离的元素。 请注意,它也可用于带有int键的字典,例如。此方法花费O(n)时间。 如果列表已经排序,或者您可以只对数组进行一次排序,请使用@Lauritz答案中所示的二等分方法,该方法只需要O(logn

  • 给定一个整数列表,我想找出哪个数字最接近我在输入中给出的一个数字: 有什么快速的方法可以做到这一点吗?

  • 问题内容: 我希望能够在数字数组中找到最接近的较小值。例如,如果我有: 我正在寻找小于以下值的最接近值: 该函数将返回: 另外,如果我传递的数字大于数组中的最大值,则它应返回最大值。如果我传递的数字小于最小值,则应返回nil。 我尝试使用数组上的函数执行此操作,但是单独执行此操作不会产生我想要的结果,因为我需要这样的东西: 但不幸的是,这是无效的。有什么建议?我知道可以使用while循环轻松完成此

  • 问题内容: 是否有numpy-thonic方法(例如函数)在数组中查找最接近的值? 例: 问题答案:

  • 问题内容: 我一直试图舍入长浮点数,例如: 到目前为止没有成功。我想,(尽管这或圆形上下,这是不是我要找的)和它没有任何工作(还是浮点数)。 我能做什么? 编辑:代码: 问题答案: int(round(x)) 将其舍入并将其更改为整数 编辑: 您没有将int(round(h))分配给任何变量。当您调用int(round(h))时,它返回整数,但不执行其他任何操作。您必须将该行更改为: 将新值分配给