3 合并区间

2021-03-17  本文已影响0人  玲儿珑

【题目】以数组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)
上一篇 下一篇

猜你喜欢

热点阅读