(1)排序+合并
class Solution {
private:
vector<vector<int>> vec;
public:
vector<int> helper(vector<int> &a,vector<int> &b) {
if(a[1]<b[0]) return {-1,-1};
else if(a[1]==b[0]) return {a[0],b[1]};
else if(a[1]>=b[1]) return {a[0],a[1]};
else return {a[0],b[1]};
return {-1,-1};
}
vector<vector<int>> merge(vector<vector<int>>& intervals) {
if(intervals.size()==1) return intervals;
auto comp=[&](const vector<int> &a,const vector<int> &b) {
if(a[0]<b[0]) return true;
else if(a[0]>b[0]) return false;
else if(a[1]<b[1]) return true;
else if(a[1]>b[1]) return false;
return false;
};
sort(intervals.begin(),intervals.end(),comp);
vector<int> temp={intervals[0][0],intervals[0][1]};
for(int i=1;i<intervals.size();i++) {
vector<int> v=helper(temp,intervals[i]);
if(v[0]==-1 && v[1]==-1) {
vec.push_back(temp);
temp[0]=intervals[i][0];
temp[1]=intervals[i][1];
if(i==intervals.size()-1) vec.push_back(intervals[i]);
} else {
temp[0]=v[0];
temp[1]=v[1];
if(i==intervals.size()-1) vec.push_back(v);
}
}
return vec;
}
};