LeetCode 704. 二分查找

题目链接:

力扣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;
    }
}

你可能感兴趣的:(LeetCode,leetcode,二分查找)