ID:56.合并区间

53 阅读1分钟

题目链接

思路

  • 按左边界的大小排序
  • 开辟一个结果数组保存结果,遍历原始区间数组,将每一项(interval)与结果数组的最后一项(last)比较,如果 interval 左边界小于 last 的右边界,说明有重合,进行合并;否则,将 interval 直接加到结果数组最后一项
var merge = function (intervals) {
  const res = [];
  intervals.sort((a, b) => a[0] - b[0]);
  res.push(intervals[0]);
  for (let i = 1; i < intervals.length; i++) {
    if (intervals[i][0] > res[res.length - 1][1]) {
      res.push(intervals[i]);
    } else {
      const tmp = res.pop();
      res.push([tmp[0], Math.max(tmp[1], intervals[i][1])]);
    }
  }
  return res;
};