Merge Intervals
Q:
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]
.
A: 先按interval的start排序,后顺序扫描进行merge
vector<Interval> merge(vector<Interval> &intervals) { // Start typing your C/C++ solution below // DO NOT write int main() function vector<Interval> res; if(intervals.empty()) return res; sort(intervals.begin(),intervals.end(),cmp); res.push_back(intervals[0]); int cur = 0; for(int i=0;i<intervals.size();i++) { if(intervals[i].start<=res[cur].end) res[cur].end = max(res[cur].end,intervals[i].end); else { res.push_back(intervals[i]); cur++; } } return res; } int cmp(const Interval& t1,const Interval& t2) { return (t1.start<t2.start); }