【题目】以数组intervals表示若干个区间的集合,其中单个区间为intervals[i]=[starti, endi],请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。
【示例1】
输入:intervals = [[1,3], [2,6], [8,10], [15,18]]
输出:[[1,6], [8,10], [15,18]]
【示例1】
输入:intervals = [[1,4], [4,5]]
输出:[[1,5]]
【提示】
1<=intervals.length<=10的4次方
0<=starti<=endi<10的4次方
【答案】
let intervals = [[1,3],[2,6],[8,10],[15,18]]
var merge = function(intervals) {
let i = 0
let len = intervals.length
while ( i < len-1 ) {
intervals.sort(function(a, b){
return a[0] - b[0]
})
if ( intervals[i+1][0] <= intervals[i][1] ) {
if (intervals[i+1][1] < intervals[i][1]) {
intervals.splice(i+1, 1)
} else {
intervals.splice(i, 2, [intervals[i][0], intervals[i+1][1]])
}
len = intervals.length
i --
}
i++
}
return intervals
};
merge(intervals)