Step-by-Step Solution to Find the Lower Bound of a Number in a Sorted Array
Understanding the Problem
We are given a sorted array and a number x
. Our task is to find the lower bound of x
in the array.
The lower bound is defined as the index of the first element in the array that is greater than or equal to x
.
Let’s Understand With an Example
arr = [1, 3, 3, 5, 8, 9]
x = 4
We want to find the first number in the array that is ≥ 4. Let's look at the array:
- 1 < 4 → Not valid
- 3 < 4 → Not valid
- 3 < 4 → Not valid
- 5 ≥ 4 → Valid, and it's the first one
So the lower bound index is 3
(0-based).
Approach: Using Binary Search
We will use binary search to solve this efficiently. Here’s the intuition:
- Binary search helps narrow down the location quickly in
O(log n)
time.
- We maintain two pointers:
low
and high
.
- We calculate the middle index:
mid = (low + high) / 2
.
- If
arr[mid] ≥ x
, it could be our answer, but there may be a better one to the left, so we move high = mid - 1
.
- If
arr[mid] < x
, we move low = mid + 1
.
The final answer will be at index low
, which will point to the smallest element ≥ x
.
Edge Cases to Consider
- x is smaller than all elements: The lower bound will be at index
0
.
- x is larger than all elements: The lower bound does not exist within the array, so the answer will be the array's length.
- x exists multiple times: The lower bound is the index of its first occurrence.
- The array is empty: There is nowhere to insert, so the lower bound is
0
.
Finally
Finding the lower bound is helpful in many real-world applications such as range-based queries, inserting into sorted arrays, and understanding how values are distributed in a dataset.
Using binary search allows us to solve the problem quickly and efficiently, even for large arrays.
Comments
Loading comments...