二分查找
二分法查找,也称折半查找,是一种在有序数组中查找特定元素的搜索算法。
输入: [1,3,5,6], 5 输出: 2
常用案例:有序数组插入
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var searchInsert = function(nums, target) {
let left = 0, right = nums.length - 1
while (left <= right) {
let mid = (left + right) >>> 1
if(nums[mid] == target) {
return mid
} else if(nums[mid] < target) {
left = mid + 1
} else {
right = mid - 1
}
}
return left
};
合并区间
输入:intervals = [[1,4],[4,5]] 输出:[[1,5]] 解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。
var merge = function(intervals) {
let res = []
intervals.sort((a, b) => (a[0] - b[0]))
let pre = intervals[0]
intervals.forEach((item) => {
// 有重合
if(pre[1] >= item[0]) {
pre[1] = Math.max(pre[1], item[1])
} else { // 没有重合
res.push(pre)
pre = item
}
})