【数组】56. 合并区间

题目:

 

 

解答:

 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 class Solution {
11 public:
12     static bool earlier(const Interval &a, const Interval &b)
13     {
14         return a.start < b.start;
15     }
16     vector<Interval> merge(vector<Interval> &intervals)
17     {
18         if(intervals.size() <= 1)
19         {
20             return intervals;
21         }
22         sort(intervals.begin(), intervals.end(), earlier);
23         
24         for(int i = 0; i < intervals.size() - 1; i++)
25         {
26             if(intervals[i].end >= intervals[i + 1].start)
27             {
28                 if(intervals[i].end < intervals[i + 1].end)
29                 {
30                     intervals[i].end = intervals[i + 1].end;
31                 }
32                 intervals.erase(intervals.begin() + i + 1);
33                 --i;
34             }
35             
36         }
37         return intervals;
38     }
39 };

 

posted @ 2020-05-05 15:32  梦醒潇湘  阅读(238)  评论(0)    收藏  举报