不存在会返回比目标数字大的,因为判断当前mid位置的数字<num时,最后一次left = mid + 1,判断当前mide位置的数字>num时,right = mide,所以是大于目标数字。
最靠右的:
function binarySearch(num, nums) {
let left = 0, right = nums.length - 1;
while(true) {
if (left == right) {
return left;
}
let mid = left + Math.floor((right - left) / 2);
if (nums[mid] < num) {
left = mid + 1;
} else if (nums[mid] == num && nums[mid + 1] == num) {
left = mid+1;
} else {
right = mid;
}
}
}