Skip to content

Latest commit

 

History

History
25 lines (22 loc) · 822 Bytes

merge-intervals.md

File metadata and controls

25 lines (22 loc) · 822 Bytes
/**
 * @param {number[][]} intervals
 * @return {number[][]}
 */
var merge = function(intervals) {
    if (intervals.length === 0) return [];

    intervals.sort((a,b) => a[0] - b[0]); // [start, ned]按照start升序排列
    let res = [];

    res.push(intervals[0]); // start最小的开始判断

    for (let i = 0; i < intervals.length; i++) {
        const curr = intervals[i];
        const last = res.length - 1;
        if (res[last] && curr[0] <= res[last][1]) { // 跟当前res中最新区间的end进行比较,如果当前start小于区间的end,则表示两个区间有交集
            res[last][1] = Math.max(curr[1], res[last][1])
        } else { // 否则为没有交集,将当前最新的区间放到res最后
            res[last+1] = curr;
        }
    }
    return res;
};