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) {}};bool comp(Interval &a, Interval &b){ return a.start < b.start;}vector<Interval> merge(vector<Interval> &intervals){ int n = intervals.size(); vector<Interval> result; sort(intervals.begin(), intervals.end(), comp); int left = intervals[0].start; int right = intervals[0].end; for (int i = 1; i < n; i++) { if (intervals[i].start > right) { result.push_back(Interval(left, right)); left = intervals[i].start; } right = intervals[i].end; } result.push_back(Interval(left, right)); return result;}
新闻热点
疑难解答