
一句话思路:
当p[0] <= ans[m - 1][1] 时可以合并,右端点最大值为ans[m - 1][1] = Math.max(ans[m - 1][1], p[1]);
js
/**
* @param {number[][]} intervals
* @return {number[][]}
*/
var merge = function (intervals) {
const ans = []
// sort是原地遍历
intervals.sort((a, b) => a[0] - b[0])
// 遍历数组
for (const p of intervals) {
const m = ans.length
if (m && p[0] <= ans[m - 1][1]) {
// 可以合并
ans[m - 1][1] = Math.max(ans[m - 1][1], p[1]) // 更新右端点最大值
} else {
// 不相交,无法合并
ans.push(p) // 新的合并区间
}
}
return ans
}