704.二分查找

17 阅读1分钟
image.png

一般常见的有两种情况

1.左闭右闭

  • 关键点
  • 首先就是判断left能不能等于right,不同情况是不一样的
  • 其次就是移动左右索引的时候是移到mid还是移到mid-1 or mid+1
class Solution {
    public int search(int[] nums, int target) {
        int left = 0;
        int right = nums.length - 1;
        int mid = (left + right) / 2;
        while (left <= right) {
            if (nums[mid] == target) {
                return mid;
            } else if (nums[mid] > target) {
                right = mid - 1; //如果不减去1会报错
                mid = (left + right) / 2;
            } else {
                left = mid + 1;
                mid = (left + right) / 2;
            }
        }
        return -1;

    }
**}**

2.左闭右开