Find Closest Number in a Sorted Array
Question (LI.459)
Example
([1,2,3], 2) => 1
([1,3,3,4], 2) => return either 0,1,2 will be fine
([1,4,6], 5) => return either 1 or 2Linear Search
public int closestNumber(int[] A, int target) {
// edge check
if (A == null || A.length == 0) {
return -1;
}
// linear search
int minDiff = diff(A[0], target);
int i = 1;
for (i = 1; i < A.length; i++) {
int curDiff = diff(A[i], target);
if (curDiff >= minDiff) {
return i - 1;
} else {
minDiff = curDiff;
}
}
// return last index
return i-1;
}
private int diff(int num1, int num2) {
return Math.abs(num1 - num2);
}Binary Search
Last updated