Implement Lower Bound
Intuition
In a sorted array, the lower bound of a number x is defined as the index of the first element that is greater than or equal to x. If all elements are smaller than x, the lower bound is the array’s length (i.e., the index where x would be inserted to maintain the sorted order).
Complexity
Space Complexity
Time Complexity
Code
public static int lowerBound(int[] sortedArray, int arrayLength, int target) {
int left = 0, right = arrayLength - 1;
while (left <= right) {
int mid = (left + right) >> 1; // Compute middle index
// If target is found, move left to find first occurrence
if (sortedArray[mid] == target) {
while (mid - 1 >= 0 && sortedArray[mid - 1] == target) mid--;
return mid;
}
// If middle element is less than target, move right
if (sortedArray[mid] < target) {
left = mid + 1;
} else {
// Middle element is >= target, search left side
right = mid - 1;
}
}
// If target is not present, left points to the lower bound
return left;
}
Last updated