# 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 鼓励我一下:
觉得还不错的话,给我的项目点个star吧