60.二分查找
2022-02-21 本文已影响0人
wo不是黄蓉
day12: 704. 二分查找(简单)
思想和我之前写的有序数组中的单一元素很像可以参考。
二分二分:
- 先划分目标元素的左右两边
- 根据条件判断是否到达指定位置
- 不到指定位置就改变左右两边指针进行移动,趋于目标元素。
var search = function (nums, target) {
if (!nums.includes(target)) return -1;
let left = 0,
right = nums.length - 1;
while (left < right) {
let mid = (left + right) >>> 1;
//target-nums[mid] > 0取值区间在[mid,right],<0取值区间在[mid-left之间]
if (target - nums[mid] > 0) {
left = mid + 1;
}
if (target - nums[mid] < 0) {
right = mid - 1;
}
if (target - nums[mid] === 0) {
return mid;
}
}
return right;
};
console.log(search([-1, 0, 3, 5, 9, 12], 2));