题目链接:
力扣https://leetcode-cn.com/problems/binary-search/
【分析】二分查找的模板题,记住几个关键点:
1.初始left=0, right = length - 1;
2.while循环继续的条件为left<=right;
3.mid = (left + right) >> 1; (注意这里有时候可能溢出,int的范围从-2^31~2^31-1,最好写成left+(right-left)>>1);
4.跳出while循环就意味着没找到,返回-1即可。
class Solution {
public int search(int[] nums, int target) {
int mid, left = 0, right = nums.length - 1;
while(left <= right){
mid = (left + right) >> 1;
if(nums[mid] == target) return mid;
else if(target < nums[mid]) right = mid - 1;
else left = mid + 1;
}
return -1;
}
}