解题思路
用一个二维数组存储最终答案
1.如果当前区间的左端点小于最后一个区间的右端点,则表示有重合部分,
比较两个区间的右端点,将右端点置为二者间的最大值
2.如果当前区间的左端点大于最后一个区间的右端点,
则表示没有重合部分,直接将区间加入二位存储数组中
代码
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
if(intervals.size() == 0){
return {};
}
sort(intervals.begin(),intervals.end());
vector<vector<int>> v;
for(int i = 0;i < intervals.size();++i){
int l = intervals[i][0];
int r = intervals[i][1];
if(!v.size() || v.back()[1] < l){
v.push_back({l,r});
}else{
v.back()[1] = max(v.back()[1],r);
}
}
return v;
}
};