基本搜索位置

  1. int left = 0;
  2. int right = length-1;
  3. while(left<=right){
  4. int mid = left+(right-left)/2;
  5. if(nums[mid]<target){
  6. left = mid+1;
  7. }else if(nums[mid]>target){
  8. right = mid-1;
  9. }else{
  10. return mid;
  11. }
  12. }
  13. return -1;

扩展-搜索左侧位置

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

搜索右侧位置

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