以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。
function merge(intervals: number[][]): number[][] {
//先每个数组的起点进行排序,后续仅考虑每个数组的终点,
intervals.sort((a,b)=>a[0]-b[0])
const result = [intervals[0]]
for(let i=0;i<intervals.length;i++){
const current = intervals[i]
const last = result[result.length -1]
//比较前一个的终点以及当前的起点就能知道是否合并
if(current[0]<=last[1]){
//合并
last[1] = Math.max(current[1],last[1])
}else {
//否则不合并,直接 push
result.push(current)
}
}
return result
};