lower_bound, upper_bound - changicho/algorithm-training GitHub Wiki

lower_bound, upper_bound

lower_bound

μ°ΎλŠ” 숫자 이상이 μ²˜μŒλ‚˜μ˜€λŠ” 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;
}

upper_bound

μ°ΎλŠ” 숫자 μ΄ˆκ³Όκ°€ 처음 λ‚˜μ˜€λŠ” 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;
}
⚠️ **GitHub.com Fallback** ⚠️