算法
01.二分查找
题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
解法:二分查找法(左闭右开)
定义三个指针,分别指向left = 0,right = XX.length,middle = left + (right - left) / 2,判断nums[middle]值是否等于target;当middle小于target时,让left=middle + 1(nums[middle]值已经不等于target所以+1);当middle大于target时,让right = middle;以此类推。
if(target < nums[0] || target > nums[nums.length -1]){
return -1;
}
int left = 0, right = nums.length;
while(left < right){
int middle = left + (right - left) / 2;
if(nums[middle] == target){
return middle;
}else if(nums[middle] > target){
right = middle;
}else if(nums[middle] < target){
left = middle+1;
}
}
return -1;