zoukankan      html  css  js  c++  java
  • 二分搜索模板

    搜索区间统一为两端关闭即[left,right]

    普通二分搜索

    int binary_search(int[] nums,int target){
       int left=0,right=nums.length-1;
       while(left<=right){
           int mid = left+(right-left)/2;
           if(nums[mid]<target){
               left = mid + 1;
          }else if(nums[mid]>target){
               right = mid -1;
          }else if(nums[mid]==target){
               return mid
          }
      }
       return -1;
    }

    左侧搜索二分

    int left_bound(int[] nums,int target){
       int left=0,right=nums.length-1;
       while(left<=right){
           int mid = left+(right-left)/2;
           if(nums[mid]>target){
               right = mid - 1;
          }else if(nums[mid]<target){
               left = mid + 1;
          }else if(nums[mid]==target){
                   right = mid -1;
              }
           if(left>=nums.length||nums[left]!=target){
               return -1;
          }
           return left;
      }
    }

    右侧搜索二分

    int right_bound(int[] nums,int target){
       int left=0,right=nums.length-1;
       while(left<=right){
           int mid=left+(right-left)/2;
           if(nums[mid]>target){
               right = mid -1;
          }else if(nums[mid]<target){
               left = mid + 1;
          }else if(nums[mid]==target){
               left = mid + 1
          }
      }
       if(right<0||nums[right]!=target)
           return -1;
       return right;
    }

     

  • 相关阅读:
    3-附1 ->和*的区别
    第2章 变量和基本类型
    第2章 变量和基本类型 附3---底层const和顶层const
    第2章 变量和基本类型 附2 --声明和定义的区别
    第2章 变量和基本类型 附1---变量和对象的区别
    第一章 开始
    1. 数据采集基础问题
    跟波利亚学解题---1
    [PTA]L2-001 紧急救援 (25 分)
    [图论]最短路计数(spfa)
  • 原文地址:https://www.cnblogs.com/blzm742624643/p/15753822.html
Copyright © 2011-2022 走看看