56. Merge Intervals

Leetcode link

题目简介

/**
 * @param {number[][]} intervals
 * @return {number[][]}
 */

题目给我们一个二维数组 intervals,数组中有多个数字组成的二元组

要求我们合并有重叠的二元组,并最终返回所有合并后的二元组

解题思路

这题最大的难点就是给的二元组顺序是乱序的,而最理想的情况是每个二元组都按照第一个元素从小到大排序

所以我们一开始要对 intervals 进行一次排序

排序后我们只需要遍历 intervals 然后把重叠的部分合并,把不重叠的部分推入新数组即可

Javascript

/**
 * @param {number[][]} intervals
 * @return {number[][]}
 */
var merge = function (intervals) {
    intervals.sort((a, b) => a[0] - b[0])

    const res = []
    let last = intervals[0]

    for (let i = 1; i < intervals.length; i++) {
        if (intervals[i][0] <= last[1]) {
            // merge two intervals
            last[1] = Math.max(intervals[i][1], last[1])
        } else {
            // push last to res and update last
            res.push(last)
            last = intervals[i]
        }
    }
    res.push(last)
    return res
};

results matching ""

    No results matching ""