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]
.
bool cmp(const Interval &interval1, const Interval &interval2){
return interval1.start < interval2.start;
}
class Solution {
public:
vector<Interval> merge(vector<Interval> &intervals) {
if(intervals.size() < 2)return intervals;
sort(intervals.begin(), intervals.end(), cmp);
vector<Interval> mergeIntervals;
mergeIntervals.push_back(intervals[0]);
for(int i = 1; i < intervals.size(); ++i){
Interval lastOne = mergeIntervals.back();
if(intervals[i].start > lastOne.end){
mergeIntervals.push_back(intervals[i]);
}else if(intervals[i].end > lastOne.end){
mergeIntervals.back().end = intervals[i].end;
}
}
return mergeIntervals;
}
};