704. 二分查找【二分查找】
题目
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
难度:简单
提示:
- 你可以假设
nums
中的所有元素是不重复的。 n
将在[1, 10000]
之间。nums
的每个元素都将在[-9999, 9999]
之间。
题解
最最基础的二分查找,写出即可
class Solution {
public int search(int[] nums, int target) {
int l = 0, r = nums.length - 1;
// 特意换行,注意mid的求值方法,此解法避免了int类型大值的溢出
int mid = (r - l) / 2 + l;
while (l <= r) {
if (nums[mid] == target) {
return mid;
} else if (nums[mid] > target) {
// 注意
r = mid - 1;
} else {
// 注意
l = mid + 1;
}
mid = (r - l) / 2 + l;
}
return -1;
}
}