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]
.
/*
struct Interval {
int start;
int end;
Interval() : start(0), end(0) {}
Interval(int s, int e) : start(s), end(e) {}
};
*/
class Solution {
public:
static bool cmp(Interval i1,Interval i2){
return i1.start<i2.start;
}
vector<Interval> merge(vector<Interval>& intervals) {
vector<Interval> v;
int n=intervals.size();
if(n<=1) return intervals;
sort(intervals.begin(),intervals.end(),cmp);
Interval node=intervals[0];
for(int i=1;i<n;i++){
Interval tmp=intervals[i];
if(tmp.start>node.end){
v.push_back(node);
node=tmp;
continue;
}else{
node.end=max(node.end,tmp.end);
}
}
v.push_back(node);
return v;
}
};