LeetCode--Merge Intervals

简单题:先按左左边排序,然后对输入的区间和当前结果合并

 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 cmp
11 {
12     public:
13     bool operator()(const Interval&a,const Interval&b)
14     {
15         return a.start < b.start;
16     }
17 };
18 bool comp(const Interval &lhs, const Interval &rhs)
19  {
20      return lhs.start < rhs.start;
21  }
22 class Solution {
23 public:
24     vector<Interval> merge(vector<Interval> &intervals) {
25         sort(intervals.begin(),intervals.end(),cmp());
26         vector<Interval> ret;
27         int i;
28         for(i = 0 ; i < intervals.size() ; ++i)
29         {
30             if(i == 0)
31             {
32                 ret.push_back(intervals[0]);
33             }
34             else
35             {
36                 int size = ret.size();
37                  if (ret[size-1].start <= intervals[i].start && intervals[i].start <= ret[size-1].end)
38                      ret[size-1].end = max(ret[size-1].end, intervals[i].end);
39                  else
40                      ret.push_back(intervals[i]);
41             }
42         }
43         return ret;
44     }
45 };
原文地址:https://www.cnblogs.com/cane/p/3901540.html