/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var search = function(nums, target) {
let l = 0,
r = nums.length - 1,
mid;
while(l <= r) {
mid = Math.floor((l + r)/2);
if(nums[mid] == target){
return mid;
}else if(nums[mid] < target){
l = mid + 1;
}else{
r = mid - 1;
}
}
return -1;
};
注意:
nums.length-1
)的话,表示是左闭右闭
的区间[nums[0],nums[nums.length-1]],因此在while退出循环条件中要 <=
/
的结果并不是整除,因此需要使用Math.floor取整mid+1
(或 mid-1
)