给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
public int search(int[] nums, int target) {
// 在[l...r]的范围里寻找target
int l = 0, r = nums.length - 1;
while (l <= r) { // 当 l == r时,区间[l...r]依然是有效的
//int mid = (l + r)/2;
// 防止极端情况下的整形溢出,使用下面的逻辑求出mid
int mid = l + (r - l) / 2;
if (nums[mid] == target) {
return mid;
}
if (target > nums[mid]) {
l = mid + 1;
} else {// target < nums[mid]
r = mid - 1;
}
}
return -1;
}