LC-数组-二分查找-704


二分查找

[left, right] 方式

  • [left, mid -1]
  • [mid + 1, right]
		int left = 0, right = nums.length - 1;
        while (left <= right) {
            int mid = (left + right) / 2;
            //int middle = left + ((right - left) / 2);// 防止溢出 等同于(left + right)/2
            if (nums[mid] > target) {
                right = mid - 1;
            } else if (nums[mid] < target) {
                left = mid + 1;
            } else return mid;
        }

//int middle = left + ((right - left) / 2);

// 防止溢出 等同于(left + right)/2

关于这一步的防止溢出,意义不大, Java中int的取值范围是2的32次方,最大值是2的31次方,最小值是负值的2的31次方-1

当数字这么大的时候,采取这样的查找方式是非常不合理的。

相关题目推荐

  • 35.搜索插入位置(opens new window)
  • 34.在排序数组中查找元素的第一个和最后一个位置(opens new window)
  • 69.x 的平方根
  • 367.有效的完全平方数