Java中如何用Arrays.binarySearch判断数组是否存在70-79区间数值
实现逻辑
你可以利用Arrays.binarySearch的返回值规则完成区间判断,规则如下:
- 找到目标值时返回对应索引,未找到目标值时返回
-(插入点) - 1,其中插入点是第一个大于目标值的元素下标,如果所有元素都小于目标值,插入点等于数组长度 - 我们只需要查找边界值70,再根据返回结果判断是否存在元素落在70-79区间即可
完整实现代码
import java.util.Arrays; public class RangeCheck { public static void main(String[] args) { int temperatures[] = {45, 70, 71, 67}; Arrays.sort(temperatures); int searchResult = Arrays.binarySearch(temperatures, 70); boolean isExist = false; if (searchResult >= 0) { // 数组中存在70,直接符合条件 isExist = true; } else { // 计算第一个大于70的元素的下标 int insertPos = -searchResult - 1; // 判断下标不越界,且对应的元素小于等于79 if (insertPos < temperatures.length && temperatures[insertPos] <= 79) { isExist = true; } } System.out.println(isExist ? "Yes" : "no"); } }
逻辑验证场景
- 数组为
{68, 75, 80}:查找70失败,插入点为1,对应元素75<=79,输出Yes - 数组为
{68, 80}:查找70失败,插入点为1,对应元素80>79,输出no - 数组为
{80, 90}:查找70失败,插入点为0,对应元素80>79,输出no - 数组为
{65, 69}:查找70失败,插入点为2等于数组长度,输出no
内容的提问来源于stack exchange,提问作者pythonbeginner90
相关产品推荐
相关产品推荐

