题目描述
- 以数组
intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]
- 请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间
解题思路
- 先将区间数组按照第一个元素进行排序
- 判断两个有序区间
arr1和arr2是否有交集
arr1[1] < arr2[0],无交集
arr1[1] >= arr2[0],有交集
解题代码(JavaScript)
var merge = function (intervals) {
let sortIntervals = intervals.sort((a, b) => a[0] - b[0]);
let prev = sortIntervals[0];
let cur = null;
let res = [];
for (let i = 1; i < sortIntervals.length; i++) {
cur = sortIntervals[i];
if (prev[1] >= cur[0]) {
prev[1] = Math.max(prev[1], cur[1]);
continue;
} else {
res.push(prev);
prev = cur;
}
}
res.push(prev);
return res;
};