算法描述:
Given a collection of intervals, merge all overlapping intervals.
Example 1:
Input: [[1,3],[2,6],[8,10],[15,18]] Output: [[1,6],[8,10],[15,18]] Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].
Example 2:
Input: [[1,4],[4,5]] Output: [[1,5]] Explanation: Intervals [1,4] and [4,5] are considered overlapping.
解题思路:排序,比较,注意边界值,比较函数的编写。比较函数必须是静态函数。
vector<Interval> merge(vector<Interval>& intervals) { if(intervals.size() <=1) return intervals; vector<Interval> results; sort(intervals.begin(),intervals.end(),compare); int start = intervals[0].start; int end = intervals[0].end; for(int i = 0; i <intervals.size(); i++){ if(intervals[i].start <= end){ end = max(end,intervals[i].end); }else{ Interval temp(start, end); results.push_back(temp); start =intervals[i].start; end= intervals[i].end; } } Interval temp(start, end); results.push_back(temp); return results; } static bool compare(Interval a, Interval b){ if(a.start < b.start) return true; else return false; }