题目
Given a collection of intervals, merge all overlapping intervals.
For example,
Given [1,3],[2,6],[8,10],[15,18],
return [1,6],[8,10],[15,18].
解析
题意:将一个Interval新结构进行合并
关键点在于每次比较用的是ret中的尾Interval。
代码
/**
* Definition for an interval.
* struct Interval {
* int start;
* int end;
* Interval() : start(0), end(0) {}
* Interval(int s, int e) : start(s), end(e) {}
* };
*/
class Solution {
public:
vector<Interval> merge(vector<Interval>& intervals) {
vector<Interval> ret;
if(!intervals.size()) return ret;
sort(intervals.begin(),intervals.end(),[](Interval a,Interval b){return a.start<b.start;});
ret.push_back(intervals[0]);
for(int i=1;i<intervals.size();i++){
if(ret.back().end<intervals[i].start) ret.push_back(intervals[i]);
else
ret.back().end=max(ret.back().end,intervals[i].end);
}
return ret;
}
};