56. 合并区间
思路:排序
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
sort(intervals.begin(), intervals.end(), cmp);
vector<vector<int>> res;
int size = intervals.size();
int begin, end;
for(int i=0;i<size;i++){
if(i==0){
begin=intervals[i][0];
end=intervals[i][1];
}
else{
if(end>=intervals[i][0]){//有重合
end = max(end,intervals[i][1]);
}
else{
res.push_back({begin, end});
begin=intervals[i][0];
end=intervals[i][1];
}
}
if(i==size-1) {
end = max(end,intervals[i][1]);
res.push_back({begin, end});
}
}
return res;
}
private:
static bool cmp(vector<int>& a,vector<int>& b) {
if(a[0]==b[0]) return a[1]<b[1];
return a[0]<b[0];
}
};