以数组 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
};