Implement Upper Bound
Intuition
The upper bound of a number x in a sorted array is the index of the first element that is strictly greater than x. If all elements are less than or equal to x, the upper bound is the index n (i.e., where x would go if appended to the array).
Complexity
Space Complexity
Time Complexity
Code
public static int upperBound(int[] sortedArray, int target, int arrayLength) {
int left = 0, right = arrayLength - 1;
while (left <= right) {
int mid = (left + right) >> 1; // Calculate mid index
// If element equals target, move right to find strictly greater value
if (sortedArray[mid] == target) {
while (mid < arrayLength && sortedArray[mid] == target) mid++;
return mid;
}
// If middle element is less than or equal to target, move right
if (sortedArray[mid] < target) {
left = mid + 1;
} else {
// Current mid might be the upper bound, search in left half
right = mid - 1;
}
}
// If no greater element exists, return insertion point (arrayLength)
return left;
}
Last updated