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]
.
思路:还是比较简单的思路,不过要注意区间首先要排序.
代码如下:
/** * 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> ans; if(intervals.size() == 0) return ans; sort(intervals.begin(), intervals.end(), [](Interval& a, Interval& b){ return a.start < b.start;}); int start = intervals[0].start, end = intervals[0].end; for(int i =1; i< intervals.size(); i++) { if(intervals[i].start <= end) end = max(intervals[i].end, end); else { Interval tem(start, end); ans.push_back(tem); start = intervals[i].start; end = intervals[i].end; } } Interval tem(start, end); ans.push_back(tem); return ans; } };