56. Merge Intervals
题目简介
/**
* @param {number[][]} intervals
* @return {number[][]}
*/
题目给我们一个二维数组 intervals,数组中有多个数字组成的二元组
要求我们合并有重叠的二元组,并最终返回所有合并后的二元组
解题思路
这题最大的难点就是给的二元组顺序是乱序的,而最理想的情况是每个二元组都按照第一个元素从小到大排序
所以我们一开始要对 intervals 进行一次排序
排序后我们只需要遍历 intervals 然后把重叠的部分合并,把不重叠的部分推入新数组即可
Javascript
/**
* @param {number[][]} intervals
* @return {number[][]}
*/
var merge = function (intervals) {
intervals.sort((a, b) => a[0] - b[0])
const res = []
let last = intervals[0]
for (let i = 1; i < intervals.length; i++) {
if (intervals[i][0] <= last[1]) {
// merge two intervals
last[1] = Math.max(intervals[i][1], last[1])
} else {
// push last to res and update last
res.push(last)
last = intervals[i]
}
}
res.push(last)
return res
};