题目描述

代码:
cpp
class Solution {
struct Interval{
int left;
int right;
Interval(int l=0,int r=0):left(l),right(r){}
bool operator<(const Interval& rhs) const{
return left<rhs.left;
}
};
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
int len = intervals.size();
vector<Interval> myIntervals(len);
for(int i = 0;i <len;i++){
myIntervals[i].left =intervals[i][0];
myIntervals[i].right=intervals[i][1];
}
sort(myIntervals.begin(),myIntervals.end());
vector<vector<int>> res;
vector<int> range(2,0);
int low = 0;
int high = 0;
for(int i = 1;i < len;i++){
if(myIntervals[high].right >= myIntervals[i].right)
continue;
if(myIntervals[high].right >= myIntervals[i].left){
high = i;
}else{
range[0] = myIntervals[low].left;
range[1] = myIntervals[high].right;
res.push_back(range);
low = i;
high = low;
}
}
range[0] = myIntervals[low].left;
range[1] = myIntervals[high].right;
res.emplace_back(range);
return res;
}
};