Offer 驾到,掘友接招!我正在参与2022春招系列活动-刷题打卡任务,点击查看活动详情。
一、题目描述:
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。
来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/me…
二、思路分析:
先排序再遍历。start代表新插入数组开始值,end代表结束值。时间复杂度主要在于排序O(nlgn)
三、AC 代码:
* @param {number[][]} intervals
* @return {number[][]}
*/
var merge = function(intervals) {
if(intervals.length<=1) return intervals;
let res=[];
intervals.sort((a,b)=>a[0]-b[0]);
let i=0;
let len=intervals.length;
while(i<len){
let j=i+1;
let end=intervals[i][1];
while(j<len&&intervals[j][0]<=end) {
end=Math.max(end,intervals[j][1])
j++;
}
res.push([intervals[i][0],end]);
i=j;
}
return res;
};
四、总结:
快慢指针