//找不到返回-1 intsearch(vector<int>& nums, int target){ int left = 0, right = nums.size()-1; while (left<=right){ int mid = left+(right-left)/2; if (nums[mid]==target) return mid; elseif (nums[mid]>target) right = mid-1; else left = mid+1; } return-1; }
//若没找到,返回大于该元素的第一个元素 intlowerBound(vector<int>& nums, int target){ int left = 0, right = nums.size() - 1; while (left <= right) { int mid = left + ((right - left) >> 1); //不容易移除 if (target <= nums[mid]) { //当目标值小于等于nums[mid]时,继续在左区间检索,找到第一个数 right = mid - 1;