Closest in Sorted Array
Given a target integer T and an integer array A sorted in ascending order, find the index i in A such that A[i] is closest to T.
Assumptions
There can be duplicate elements in the array, and we can return any of the indices with same value.
Examples
A = {1, 2, 3}, T = 2, return 1
A = {1, 4, 6}, T = 3, return 1
A = {1, 4, 6}, T = 5, return 1 or 2
A = {1, 3, 3, 4}, T = 2, return 0 or 1 or 2
Corner Cases
What if A is null or A is of zero length? We should return -1 in this case.
High Level:
left++ right-- until left is first element greater than target
check for closer between left and left - 1
Mistake Made:
When target out of bounds, edge case need to be handled to avoid IndexOutOfBounds error
Time Complexity: O(logN)
Space Complexity: O(1)
Last updated
Was this helpful?