我需要帮助找到数组中下一个最接近的数字,从第一个位置开始,一直持续到数组的末尾。我正在寻找最接近目标数字的最大数字。最大的数字应返回 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 计数器。