题目描述
代码:
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;}
};