版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sai_j/article/details/82944706
int lower_bound(vector<int>& nums, int target) {
int lo = 0, hi = nums.size() - 1;
while (lo <= hi) { // equal
int mid = lo + (hi - lo) / 2;
if (target > nums[mid]) {
lo = mid + 1;
} else {
hi = mid - 1; // mid - 1 !!
}
}
return lo;
}
int upper_bound(vector<int>& nums, int target) {
int lo = 0, hi = nums.size() - 1;
while (lo <= hi) { // equal !!
int mid = lo + (hi - lo) / 2;
if (target >= nums[mid]) {
lo = mid + 1;
} else {
hi = mid - 1; // mid - 1 !!
}
}
return lo;
}