三种查找:

  1. 普通的二分
    class Solution {
    public:
     int binary_search(vector<int>& nums, int target)
     {
         int len = nums.size();
         int left = 0, right = len - 1;
         while(left <= right)
         {
             int middle = left + (right - left) / 2;
             if(nums[middle] == target) 
                 return middle;
             else if(nums[middle] < target) 
                 left = middle + 1;
             else 
                 right = middle - 1;
         }
         return -1;
     }
     int search(vector<int>& nums, int target) {
         int index = binary_search(nums, target);
         if(index == -1) return -1;
         else
         {
             while(index - 1 >= 0 && nums[index - 1] == nums[index])
                 index--;
             return index;
         }
     }
    };
  2. 寻找最小下标的二分
3. 寻找最大下标的二分

```