提示:
(1)你可以假设 nums 中的所有元素是不重复的。
(2)n 将在 [1, 10000]之间。
(3)nums 的每个元素都将在 [-9999, 9999]之间。
注意:
1、进行二分查找时,我们要注意区间是[left,right]还是[left,right)在本题中我用的是[left,right]
2、在求mid时,我们用的是位运算((right-left)>>1),相当于二进制向右移一位,相当于(left+right)/2,目的是防止运算溢出
代码如下:
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var search = function(nums, target) {
let mid = 0,left = 0,right = nums.length-1;
while(left<=right){
//进行位运算,防止溢出
mid = left+((right-left)>>1);
if(nums[mid]>target){
right = mid- 1;
}
else if(nums[mid]<target){
left = mid + 1;
}
else{
return mid;
}
}
return -1;
};