# 56 合并区间

# 题目链接

# 难度:中等

#

#

#

#

#

#

#

#

#

#

#

#

#

#

# 代码:

排序 即将添加的元素和已添加元素之间的对比

/**
 * @param {number[][]} intervals
 * @return {number[][]}
 */
var merge = function(intervals) {
  if (intervals.length == 0) return [];
  var res = [];
  // 排序二维数组 递增的数组
  intervals.sort(function(a, b) {
    return a[0] - b[0];
  });
  // 初始化区间 从二维数组的第二个元素开始比较
  res.push(intervals[0]);
  for (var i = 1; i < intervals.length; i++) {
    // 当前元素的左边界> 已添加元素的右边界 即为新的区间
    if (intervals[i][0] > res[res.length - 1][1]) {
      res.push(intervals[i]);
    } else if (intervals[i][1] > res[res.length - 1][1]) {
      // 当前元素的右边界 大于已添加元素的右边界 它们重合 合并元素
      res[res.length - 1][1] = intervals[i][1]; // 当前元素的最大值赋值给已添加元素的最大值
    }
  }
  return res;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# 鼓励我一下:

觉得还不错的话,给我的项目点个star

# 点个Star支持我一下~

最后更新时间: 7/2/2020, 4:27:35 PM