我是 Java 新手,正在尝试执行以下操作:
给定一个整数数组,如果数组中的整数在 70 到 79 之间,则打印“Yes”。否则,打印“no”。
这是迄今为止我的代码:
import java.util.Arrays;
int temperatures[] = {45, 70, 71, 67}; //create array
Arrays.sort(temperatures); //sort temperatures
int key = 70; //define key to be searched
int result = Arrays.binarySearch(temperatures,key);
我知道这会找到温度数组中的 70 值,但是使用二元搜索来查看数组中是否存在 70 秒内的任何值的最佳方法是什么?
最佳答案
我们可以利用Arrays.binarySearch
这一事实如果未找到该元素,则返回 -(插入点) - 1
。我们可以使用 binarySearch
找到 70。如果找到了,那就太好了!否则,请查看插入点。如果超出范围,则每个元素都小于 70。否则,插入点将是数组中大于 70 的最小元素。如果大于或等于 80,我们知道没有数字在数组的 70-79 范围内。
如果你只是颠倒上面解释中的每个条件,你会得到:
int result = Arrays.binarySearch(temperatures, 70);
if (result >= 0 || // we found 70, or
(-result - 1 < temperatures.length && // insertion point in range, and
temperatures[-result - 1] < 80) // insertion point less than 80
) {
System.out.println("There is at least one temperature in the array that is within the range 70-79");
}
关于java - 在 Java 中,如何确定多个值之一是否位于数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69217093/