问题描述
思路分析
我看那个博主用的“左闭右闭”还有“左闭右开”,我就选了“左闭右闭”,都挺好理解的。
二分查找有两个条件满足才可以用:有序且不重复。
代码如下:
class Solution {
public int search(int[] nums, int target) {
if(target < nums[0] || target > nums[nums.length - 1]) return -1;//节省时间
int left = 0, right = nums.length - 1;//注意Java的数组长度用length求.
while(left <= right){//左闭右闭所以可以相等
int middle = left + ((right - left) / 2);//避免越界
if(nums[middle] == target)
return middle;
else if(nums[middle] > target)
right = middle - 1;
else if(nums[middle] < target)
left = middle + 1;
}
return -1;
}
}