微信公众号:醉前端,关注可了解更多题目。
题 目
Q:
给出一个区间的集合,请合并所有重叠的区间。
- 示例 1:
输入: [[1,3],[2,6],[8,10],[15,18]],
输出: [[1,6],[8,10],[15,18]]。
解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
- 示例 2:
输入: [[1,4],[4,5]],
输出: [[1,5]]。
解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。
答 案
const merge = intervals => {
intervals.sort(function(a, b) {
if (a[0] !== b[0]){
return a[0] - b[0];
}
return a[1] - b[1];
});
let len = intervals.length,
ans = [],
start, end;
for (let i = 0; i < len; i++) {
let s = intervals[i][0],
e = intervals[i][1];
if (start === undefined){
start = s, end = e;
}else if (s <= end){
end = Math.max(e, end);
}else {
let part = [start, end];
ans.push(part);
start = s;
end = e;
}
}
if (start !== undefined) {
let part = [start, end];
ans.push(part);
}
return ans;
};
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。