lower_bound, upper_bound - changicho/algorithm-training GitHub Wiki
μ°Ύλ μ«μ μ΄μμ΄ μ²μλμ€λ index
int lowerBound(vector<int> &nums, int target){
int size = nums.size();
int left = 0, right = size;
while(left < right){
int mid = left + (right - left) / 2;
if(target <= nums[mid]){
// pick left
right = mid;
}else if(nums[mid] < target){
// pick right
left = mid+1;
}
}
return right;
}μ°Ύλ μ«μ μ΄κ³Όκ° μ²μ λμ€λ index
int upperBound(vector<int> &nums, int target){
int size = nums.size();
int left = 0, right = size;
while(left < right){
int mid = left + (right - left) / 2;
if(target < nums[mid]){
// pick left
right = mid;
}else if (nums[mid] <= target){
// pick right
left = mid + 1;
}
}
return right;
}