数组中下一个最接近的数字



我需要帮助找到数组中下一个最接近的数字,从第一个位置开始,一直持续到数组的末尾。我正在寻找最接近目标数字的最大数字。最大的数字应返回 Integer.MAX_VALUE。

例如:

int[] numbers = {12, 42, 13, 56, 41, 50, 100, 60}; 

会回来

12 : 13
42 : 50
13 : 41
56 : 60
41 : 42
50 : 56 
100 : MAX_VALUE
60 : 100
我成功地编写了嵌套的循环,该循环返回下一个最大数字

,但一生都无法弄清楚如何返回最接近目标数字的下一个最大数字。

int next = 0;
for (int i = 0; i < numbers.length; i++) {
  for (int j = i + 1; j < numbers.length; j++) {
        if (numbers[i] < numbers [j]) {
          next = numbers[j];
          break;
        }
  }
  System.out.println(numbers[i] + ":" + next);
}

最简单的方法是使用 Arrays.sort 方法对数组进行排序。然后,对于每个元素,您只需选择下一个元素(最后一个元素MAX_VALUE(。

如果必须使用循环来执行此操作,请为每个元素找到数组中大于当前元素的 min 元素。

for (int e0 : x) {
    int eMin = Integer.MAX_VALUE;
    for (int e1 : x) {
        if (e1 > e0 && e1 < eMin) {
            eMin = e1;
        }
    }
    if (eMin == Integer.MAX_VALUE) {
        System.out.println(e0 + " : MAX_VALUE");
    } else {
        System.out.println(e0 + " : " + eMin);
    }
}

再取一个临时数组并将 x 复制到 temp 并对温度进行排序,并在 temp 显示下一个最接近 temp 的数字上迭代 x 和 keeo 计数器。

最新更新