704. 二分查找

362 阅读1分钟

思路:二分查找,O(logN)

  • 如果目标值等于中间元素,则找到目标值。
  • 如果目标值较小,继续在左侧搜索。
  • 如果目标值较大,则继续在右侧搜索。
class Solution {
    public int search(int[] nums, int target) {
        int left = 0; 
        int right = nums.length - 1;
        while (left <= right) {
            int mid = left + (right - left) / 2;//防止两个大数相加溢出
            if (target == nums[mid]) {
                return mid;
            }
            if (target > nums[mid]) {
                left = mid + 1;//+1的原因是:mid已经被搜索过了
            }
            if (target < nums[mid]) {
                right = mid - 1;
            }
        }
        return -1;
    }
}