Open
Description
题目
出处:LeetCode 算法第56题
给出一个区间的集合,请合并所有重叠的区间。
示例 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] 可被视为重叠区间。
思路
对所有项按start大小进行排序,遍历所有的项。
解答
/**
* Definition for an interval.
* function Interval(start, end) {
* this.start = start;
* this.end = end;
* }
*/
/**
* @param {Interval[]} intervals
* @return {Interval[]}
*/
var merge = function (intervals) {
if (intervals.length <= 1) {
return intervals;
}
var result = [];
intervals.sort(function (a, b) {
return a.start - b.start;
});
var start = intervals[0].start;
var end = intervals[0].end;
for (var i = 0; i < intervals.length; i++) {
if (intervals[i].start <= end) {
end = Math.max(end, intervals[i].end);
} else {
result.push(new Interval(start, end));
start = intervals[i].start;
end = intervals[i].end;
}
}
result.push(new Interval(start, end));
return result;
};
Metadata
Assignees
Labels
No labels