刷LeetCode过程中遇到的一个知识点,特此记录~
给定一个有序数组与目标值,数组中不一定有目标值,找出与目标值最相近的数的下标
private int findTarget(int[] nums, int lo, int hi, int target) {
//如果只有一个元素可选,那就直接返回该元素
if(lo == hi) {
return lo;
}
int middle = 0;
while (lo < hi) {
middle = (lo + hi) / 2;
if (target == nums[middle]) {
return middle;
} else if (Math.abs(target - nums[middle]) > Math.abs(target - nums[middle + 1])) {
lo = middle + 1;
}else{
hi = middle - 1;
}
}
return Math.abs(target - nums[middle]) > Math.abs(target - nums[middle + 1]) ? (middle + 1) : middle;
}