1 /**
 2  * Definition for an interval.
 3  * struct Interval {
 4  *     int start;
 5  *     int end;
 6  *     Interval() : start(0), end(0) {}
 7  *     Interval(int s, int e) : start(s), end(e) {}
 8  * };
 9  */
10 
11 static int wing=[]()
12 {
13     std::ios::sync_with_stdio(false);
14     cin.tie(NULL);
15     return 0;
16 }();
17 
18 class Solution 
19 {
20 public:
21     vector<Interval> merge(vector<Interval>& intervals) 
22     {
23         vector<Interval> res;
24         if(intervals.empty())
25             return res;
26         sort(intervals.begin(),intervals.end(),[](Interval a,Interval b){return a.start<b.start;});
27         res.push_back(intervals[0]);
28         int sz=intervals.size();
29         for(int i=1;i<sz;i++)
30         {
31             if(res.back().end<intervals[i].start)
32                 res.push_back(intervals[i]);
33             else
34                 res.back().end=max(res.back().end,intervals[i].end);
35         }
36         return res;
37     }
38 };

合并间隙,先排序,排序之后只用比较末尾值和当前扫描的元素开始值。

posted on 2018-07-18 10:55  高数考了59  阅读(127)  评论(0编辑  收藏  举报