• 二分查找返回大于某数的最小索引和小于某数的最大索引


    二分查找大于某数的最小索引:

    1.数组中元素重复时,返回最接近的索引。如nums={5,7,7,8,8,10} target=5 则返回的索引值为1即  指向第一个值为7的元素 

    2.若返回的ans=nums.length说明数组中没有比target大的元素

    public int binarySearch(int[] nums, int target) {
             int start=0;
             int end=nums.length-1;
             int ans=nums.length;
             while(start<=end) {
                 int mid=start+(end-start)/2;
                 if(nums[mid]>target) {
                     end=mid-1;
                     ans=mid;
                 }else {
                     start=mid+1;
                 }
             }
             return ans;
         }

    二分查找小于某数的最大索引:

    与大于某数的最小索引同理,略作改变

    1.数组中元素重复时,返回最接近的索引。如nums={5,7,7,8,8,10} target=10 则返回的索引值为4即指向第二个值为8的元素 

    2.若返回的ans=-1说明数组中没有比target小的元素

    public int binarySearch(int[] nums, int target) {
             int start=0;
             int end=nums.length-1;
             int ans=-1;
             while(start<=end) {
                 int mid=start+(end-start)/2;
                 if(nums[mid]>=target) {
                     end=mid-1;
                 }else {
                     start=mid+1;
                     ans=mid;
                 }
             }
             return ans;
         }

  • 相关阅读:
    SQL Server对象类型(3)——4.3.视图(View)
    需求工程方法的学习
    Hadoop(MapReduce)
    使用CSS变量实现主题定制真的很简单
    微信早安消息推送(大升级版-企业微信)
    力扣 792. 匹配子序列的单词数
    MacBook将iPad和iPhone备份到移动硬盘
    Python传参拷贝问题
    京东JAVA面试心得与面试题详解
    机器学习常识:初学者应该知道的10 大机器学习算法
  • 原文地址:https://blog.csdn.net/qq_40043365/article/details/127112695