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 };