题意描述:
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。
和射气球、划分区间思路相同。
完整C++代码如下:
class Solution {
private:
static bool cmp(vector<int>& a, vector<int>& b){
return a[0] < b[0];
}
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
vector<vector<int>> res;
if(intervals.size() == 0) return res;
sort(intervals.begin(), intervals.end(), cmp);
res.emplace_back(intervals[0]);
for(int i = 1; i < intervals.size(); i++){
if(res.back()[1] >= intervals[i][0]){
res.back()[1] = max(res.back()[1], intervals[i][1]);
}
else{
res.emplace_back(intervals[i]);
}
}
return res;
}
};