[LeetCode] 56. Merge Intervals 解题思路

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].

问题:给定一个区间集合,整合所有重叠的区间。

对区间集合按照 start 来排序,然后根据 intervals[i].start 和 res.lastElement.end 来整合即可。

 1     int static comp(Interval t1, Interval t2){
 2         int res = (t2.start > t1.start);
 3         return res;
 4     }
 5 
 6     vector<Interval> merge(vector<Interval>& intervals) {
 7         
 8         vector<Interval> vt;
 9     
10         if (intervals.size() == 0) {
11             return vt;
12         }
13             
14         std::sort(intervals.begin(), intervals.end(), comp);
15                 
16         vt.push_back(intervals[0]);
17         
18         for (int i = 1 ; i < intervals.size(); i++) {
19             
20             if (intervals[i].start <= vt.back().end) {
21                 vt.back().end = max( vt.back().end, intervals[i].end);
22             }else{
23                 vt.push_back(intervals[i]);
24             }
25         }
26     
27         return vt;
28         
29     }

 

posted @ 2015-12-28 00:58  TonyYPZhang  阅读(627)  评论(0编辑  收藏  举报