二分查找
class Solution {
public:
    int search(vector<int>& nums, int target) {
        // //左闭右闭区间
        // int l = 0;
        // int r = nums.size() - 1;
        // while(l <= r){
        //     int mid = l + ((r - l) >> 1);
        //     if (nums[mid] < target){
        //         l = mid + 1;
        //     }else if (nums[mid] > target){
        //         r = mid - 1;
        //     }else{
        //         return mid;
        //     }
        // }
        // return -1;
        //左开右闭
        // int l = - 1;
        // int r = nums.size() - 1;
        // while (l < r){
        //     int mid = l + ((r - l) >>  1) + 1;
        //     if (nums[mid] < target){
        //         l = mid;
        //     }else if (nums[mid] > target){
        //         r = mid - 1;
        //     }else {
        //         return mid;
        //     }
        // }
        // return -1;
        //左闭右开
        int l = 0;
        int r = nums.size();
        while (l < r){
            int mid = l + ((r - l) >> 1);
            if (nums[mid] < target){
                l = mid + 1;
            }else if (nums[mid] > target){
                r = mid;
            }else{
                return mid;
            }
        }
        return -1;
    }
};