3 合并区间

【题目】以数组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)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容