Insert Interval

1、

 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     vector<Interval> insert(vector<Interval>& intervals, Interval newInterval) {
13         vector<Interval> res;
14         for(int i=0; i<intervals.size(); i++)
15         {
16             if(newInterval.start>intervals[i].end)
17                     res.push_back(intervals[i]);
18             else if(newInterval.end<intervals[i].start)
19             {
20                 res.push_back(newInterval);
21                 res.insert(res.end(), intervals.begin()+i, intervals.end());
22                 return res;
23             }
24             else 
25             {
26                 newInterval.start = min(newInterval.start, intervals[i].start);
27                 newInterval.end = max(newInterval.end, intervals[i].end);
28             }
29         }
30         res.push_back(newInterval);
31         return res;
32     }
33 };

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

 

posted on 2016-06-13 12:29  RenewDo  阅读(270)  评论(0编辑  收藏  举报

导航