給定一個排序的整數(shù)數(shù)組(升序)和一個要查找的整數(shù)target,用O(logn)的時間查找到target第一次出現(xiàn)的下標(從0開始)晾嘶,如果target不存在于數(shù)組中妓雾,返回-1。
樣例
在數(shù)組 [1, 2, 3, 3, 4, 5, 10] 中二分查找3垒迂,返回2械姻。
挑戰(zhàn)
如果數(shù)組中的整數(shù)個數(shù)超過了2^32,你的算法是否會出錯机断?
/**
* @param nums: The integer array.
* @param target: Target to find.
* @return: The first position of target. Position starts from 0.
*/
const binarySearch = function (nums, target) {
var left=0,right=nums.length,res;
while(left<=right){
var mid=Math.floor((left+right)/2);
if (nums[mid]===target) {
res=mid;
}
if(nums[mid]>=target){
right=mid-1;
}else{
left=mid+1;
}
}
if(nums[res]!=target){
res= -1;
}
return res;
}