每次都只需要检查中间值是否符合要求,检查完还没有的话说明不存在
function search(nums: number[], target: number): number {
let left = 0
let right = nums.length - 1
// 每次都检查 mid 的值
// 存在 left === right 的情况,也需要检查
// 当 left > right 的时候就检查完了
while (left <= right) {
const mid = Math.floor((left + right) / 2)
const midValue = nums[mid]
if (midValue === target) {
return mid
} else if (midValue < target) {
// mid 更小,说明在右侧,调整 left
// 因为 mid 所在的位置检查过了,所以左区间调整为 mid + 1
left = mid + 1
} else {
// mid 更大,说明在左侧,调整 right
// 因为 mid 所在的位置检查过了,所以右区间调整为 mid - 1
right = mid - 1
}
}
return -1
}