leetcode第56题合并区间

78 阅读1分钟

**题目: ** 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 题目链接

我的JavaScript解法

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

解析

  • 时间复杂度: O(n)O(n)
  • 空间复杂度: O(n)O(n)