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.有效的完全平方数