upper_bound和lower_bound的二分查找底层实现

wangkaixin-yy / 2023-05-14 / 原文

lower_bound(下界,上界,目标值)找到不小于目标值的位置,即大于等于

while(left<right){
  int mid=left+(right-left)/2;//查找区间[left,right)
  if(target<nums[mid]){
      left=mid+1;  
    }else{
      right=mid;  
    }                    
}
return left;    

upper_bound(下界,上界,目标值)找到大于目标值的位置

while(left<right){
  int mid=left+(right-left)/2;//查找区间[left,right)
  if(target<=nums[mid]){
    left=mid+1;        
    }else{
     right=mid; 
  }            
}
return left;