此处主要利用y总的二分模板
check条件为:我们要找到第一个大于等于target的位置即可,即check if (if(nums[mid] >= target))
此时利用模板中的更新条件 if(nums[mid] >= target) r = mid 即可
注意:需要注意的是要考虑特殊情况当数组中所以的数都比target要小时,此时要返回l + 1,其边界条件为l = r = nums.size() - 1 && target > nums[l],二者区缺一不可
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int l = 0, r = nums.size() - 1;
while (l < r){
int mid = l + r >> 1;
if (nums[mid] >= target) r = mid;
else l = mid + 1;
}
if (l == nums.size() - 1 && target > nums[l]) return l+1;
else return l;
}
};