- 题目来自力扣
- 文章只记录个人解题思路,并非最优
- 每周一至周五每日一题,周末不更新
56. 合并区间
给出一个区间的集合,请合并所有重叠的区间。
实例
输入: [[1,3],[2,6],[8,10],[15,18]]
输出: [[1,6],[8,10],[15,18]]
解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]
输入: [[1,4],[4,5]]
输出: [[1,5]]
解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。
链接:leetcode-cn.com/problems/me…
解题
1.排序
2.假设当前的是left,下一个是right,判断有没有重叠
var merge = function(intervals) {
intervals.sort((a, b) => a[0] - b[0]);
let res = [];
for (let i = 0; i < intervals.length; i++) {
let left = intervals[i]
let right = intervals[i+1] || []
if (right.length && left[1] >= right[0]) {
if (left[1] > right[1]) {
intervals[i+1] = [left[0], left[1]]
} else {
intervals[i+1] = [left[0], right[1]]
}
} else {
res.push(intervals[i])
}
}
return res
};