java - 在 Java 中,如何确定多个值之一是否位于数组中?

标签 java arrays binary-search

我是 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/

相关文章:

javascript - 如何在原型(prototype)函数中访问javascript对象数组

javascript - 将数组转换为树

c - 二分查找与最后一次出现的最接近的匹配

java - 安卓 : Programmatically pair a bluetooth device; Incorrect pin or passkey on some devices?

java - 用于下载 apache commons-net 库的 url 链接

java - 3D 数组声明时出现错误

python - 单调递增函数的反函数,log10() 的 OverflowError

python - 如果我需要查找一个值或下一个最高值,我应该使用什么搜索算法?

Java - 继续游戏

java - 我可以修改 osgi 包内的文件吗?