Skip to content
On this page

合并区间

Question

以数组intervals表示若干个区间的集合,其中单个区间为intervals[i] = [starti, endi]。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。

思路

js
var merge = function(intervals) {
    intervals = intervals.sort((a,b)=> a[0]<b[0]?-1:1)// x_start  从小到大排序
    for(let i=1;i<intervals.length;i++){
        if(intervals[i][0]<=intervals[i-1][1]){  //重叠
            intervals[i-1][1] = Math.max(intervals[i-1][1],intervals[i][1])
            intervals.splice(i,1)   //删除
            i--
        }
    }
    return intervals
};

注意JS中删除数组指定下标的元素的方法:splice(start,deleteCount)