56. 合并区间

118 阅读1分钟

题目描述

leetcode-cn.com/problems/me…

分析

找到更方便的合并方式

先对数组排序,然后看是否需要更新又端点,或是需要构建新的区间

过程

排序 intervals

构建返回的数组 ret = [intervals[0]]

我从第一项开始,更新或 add 新的区间

更新

遍历到的 cur 区间右端点大于 ret 最后一项右端点

add

左端点在最后一项的区间右边

代码

/**
 * @param {number[][]} intervals
 * @return {number[][]}
 */
var merge = function(intervals) {
    intervals.sort((a, b) => a[0] - b[0])
    const ret = [intervals[0]]
    
    for (let i = 1; i < intervals.length; i++) {
        const cur = intervals[i]
        const last = ret[ret.length - 1] 
        // update, add, N
        if (cur[0] > last[1]) {
            ret.push(cur)
        } else {
            last[1] = Math.max(last[1], cur[1])
        }
    }
    
    return ret
};