区间[L,R]代表还需要查找的区间。
如果nums[mid] == target,可以先将mid位置记录为答案,然后mid位置及其后面的位置都不可能是答案了,所以让R=mid-1
如果nums[mid] < target,说明mid位置及其前面的都不可能是答案了,让L = mid+1
如果nums[mid] > target,说明mid位置及其后面的位置都不可能是答案了,所以让R=mid-1
c++

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int L,R;
        L = 0;
        R = nums.size()-1;
        int ans = -1;
        while(L <= R)
        {
            int mid = (L+R)/2;
            if(nums[mid] == target)
            {
                ans = mid;
                R = mid-1;
            }
            else if(nums[mid] > target)
            {
                R = mid-1;
            }
            else
            {
                L = mid+1;
            }
        }
        return ans;

    }
};