给出一个区间的集合,请合并所有重叠的区间。
示例 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] 可被视为重叠区间。
排序之后比较端点值大小,然后进行合并
//排序之后比较端点值大小,然后进行合并
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
if (intervals.size() == 0) {
return {};
}
//排序
sort(intervals.begin(), intervals.end());
vector<vector<int>> merged;
for (int i = 0; i < intervals.size(); ++i) {
//分别取左端点和右端点
int L = intervals[i][0], R = intervals[i][1];
//back 返回末尾元素的引用
if (!merged.size() || merged.back()[1] < L) {
merged.push_back({L, R});
}else {
merged.back()[1] = max(merged.back()[1], R);
}
}
return merged;
}
};
链接:https://leetcode-cn.com/problems/merge-intervals/solution/he-bing-qu-jian-by-leetcode-solution/