每日一题有序数组判断一个数是否存在

Posted 唐宋xy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一题有序数组判断一个数是否存在相关的知识,希望对你有一定的参考价值。

二分查找总结

一般在下面这些题目中可以直接使用二分查找法,最方便并且时间复杂度也非常低

  • 在一个有序数组中,找到某个数是否存在
  • 在一个有序数组中,找到>=某个数最左侧的位置
  • 在一个有序数组中,找到<=某个数最右侧的位置
  • 局部最小值问题

题目:

给定一个有序数组arr和一个指定的数num,判断num是否存在于arr中

例如:arr=[1,3,5,6,10,100],num=10,返回true

​ arr=[1,3,5,6,10,100],num=4,返回false

解析

找到关键字:有序数组判断是否存在

一般对于有序数组中对某个数做操作的问题,都可以使用二分查找法解决

  • 代码
public static boolean isExist(int[] arr, int num) 
    if(arr == null || arr.length == 0) 
        return false;
    
    int L = 0;
    int R = arr.length - 1;
    // 这里是<,那么当L==R的时候会退出循环,最终判断该数是符合条件即可
    while (L < R) 
        int mid = L + ((R - L) >> 1);
        if(arr[mid] > num) 
            R = mid - 1;
         else if(arr[mid] < num) 
            L = mid + 1;
         else 
            return true;
        
    
    return arr[L] == num;

以上是关于每日一题有序数组判断一个数是否存在的主要内容,如果未能解决你的问题,请参考以下文章

每日一题找到有序数组中大于等于一个数最左的位置

每日一题找到有序数组中大于等于一个数最左的位置

《LeetCode之每日一题》:121.有序数组中的单一元素

力扣 每日一题 1250. 检查「好数组」难度:困难,rating: 1983(数论)

leetcode 每日一题 57. 插入区间

leetcode 每日一题 57. 插入区间