题目:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/800271850dcb48259f19a653e23f9ff0.png)
解题思路:
- 首先我们根据每个子数组的第一个数字进行排序。
- prev 为初始的第一个区间,cur 表示当前的区间,res 表示结果数组。
- 开启遍历,尝试合并 prev 和 cur,合并后更新到 prev【根据prev的第二个数字和cur的第一个数字进行比较来判断是否可以进行合并】
- 第一遍循环完后,将该数组推入res中。
- 最后遍历结束将最后一个prev推入res中并返回res。
解题代码:
/**
* @param {number[][]} intervals
* @return {number[][]}
*/
var merge = function(intervals) {
let res = [];
intervals.sort((a,b)=>a[0]-b[0]);
let prev = intervals[0];
for(let i = 1; i < intervals.length; i++){
let cur = intervals[i];
if(prev[1] >= cur[0]){
prev[1] = Math.max(prev[1],cur[1]);
}else{
res.push(prev);
prev = cur;
}
}
res.push(prev);
return res;
};
通过:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e7243673607c4711863b0bd71d32622f.png)