码迷,mamicode.com
首页 > 其他好文 > 详细

Insert Interval

时间:2014-10-06 20:00:30      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   ar   for   strong   sp   div   

Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).

You may assume that the intervals were initially sorted according to their start times.

Example 1:
Given intervals [1,3],[6,9], insert and merge [2,5] in as [1,5],[6,9].

Example 2:
Given [1,2],[3,5],[6,7],[8,10],[12,16], insert and merge [4,9] in as [1,2],[3,10],[12,16].

This is because the new interval [4,9] overlaps with [3,5],[6,7],[8,10].

 

向已经有序的且没重合的区间集合中插入新区间,并合并由此引来的重合区间,输出。

 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> ans;   //存放结果
14         int i=0;
15         while( i<intervals.size() && intervals[i].end < newInterval.start ) //如果旧区间的end小于新区间的start,那么直接放入结果中
16             ans.push_back( intervals[i++] );
17         if( i == intervals.size() ) {   //处理特定的情况,及新区间的start比旧区间最后一个区间的end还大
18             ans.push_back(newInterval);
19             return ans;
20         }
21         //不断合并重复区间,直到第一个旧区间的start大于新区间的end
22         while( i<intervals.size() && intervals[i].start <= newInterval.end ) {
23             newInterval.start = min(intervals[i].start, newInterval.start);
24             newInterval.end = max(intervals[i].end, newInterval.end);
25             ++i;
26         }
27         ans.push_back(newInterval);
28         while( i<intervals.size() ) ans.push_back(intervals[i++]);  //将后面不需要合并的区间放入结果中
29         return ans;
30     }
31 };

 

Insert Interval

标签:style   blog   color   io   ar   for   strong   sp   div   

原文地址:http://www.cnblogs.com/bugfly/p/4008516.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!