Skip to content

Latest commit

 

History

History
41 lines (33 loc) · 1.21 KB

0056. 合并区间.md

File metadata and controls

41 lines (33 loc) · 1.21 KB

56. 合并区间

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

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/merge-intervals

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


输入的 intervals 里的小区间可能是无序的,为了方便处理,先对 intervals 按每个小区间的左边元素排个序。

然后逐个遍历,用 current 表示当前区间,可以合并则合并,不能合并就把 current push 到 result 里,然后重置 current。

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