Skip to content

📚 15.合并区间

💻 代码实现

typescript
/**
 * @url https://leetcode.cn/problems/merge-intervals/description/
 */

// 示例 1:

// 输入:intervals = [[1,3],[2,6],[8,10],[15,18]]
// 输出:[[1,6],[8,10],[15,18]]
// 解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
function merge(intervals: number[][]): number[][] {
    intervals.sort((a, b) => a[0] - b[0]) // 先排序最左边
    let rightIndex = intervals[0][1], // 记录右区间
        leftIndex = intervals[0][0],
        res: number[][] = []

    for (let i = 1; i < intervals.length; i++) {
        if (intervals[i][0] <= rightIndex) {
            // 说明区间被重合
            rightIndex = Math.max(rightIndex, intervals[i][1]) // 注意取最大区间
        } else {
            res.push([leftIndex, rightIndex])
            leftIndex = intervals[i][0]
            rightIndex = intervals[i][1]
        }
    }
    res.push([leftIndex, rightIndex])
    return res
}

Released under the MIT License.