-基础版本
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var search = function(nums, target) {
let start = 0,end = nums.length-1
while(start<=end){
const mid = Math.floor((end - start) / 2) + start; // 防止溢出
if(nums[mid] ===target ){
return mid
}else if(nums[mid]>target){
end = mid -1
}else{
start =mid +1
}
}
return -1
};
- 优化内部判断
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var search = function(nums, target) {
let l = 0, r = nums.length - 1;
// 区间 [l, r]
while(l <= r) {
let mid = (l + r) >> 1;
if(nums[mid] === target) return mid;
let isSmall = nums[mid] < target;
l = isSmall ? mid + 1 : l;
r = isSmall ? r : mid - 1;
}
return -1;
};