题目描述
分析
找到更方便的合并方式
先对数组排序,然后看是否需要更新又端点,或是需要构建新的区间
过程
排序 intervals
构建返回的数组 ret = [intervals[0]]
我从第一项开始,更新或 add 新的区间
更新
遍历到的 cur 区间右端点大于 ret 最后一项右端点
add
左端点在最后一项的区间右边
代码
/**
* @param {number[][]} intervals
* @return {number[][]}
*/
var merge = function(intervals) {
intervals.sort((a, b) => a[0] - b[0])
const ret = [intervals[0]]
for (let i = 1; i < intervals.length; i++) {
const cur = intervals[i]
const last = ret[ret.length - 1]
// update, add, N
if (cur[0] > last[1]) {
ret.push(cur)
} else {
last[1] = Math.max(last[1], cur[1])
}
}
return ret
};