# leetcode_c++：Insert Intervals（057）

47人阅读 评论(0)

### 题目

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].

## 算法



class Solution{
public:
vector<Interval> insert(vector<Interval> &intervals,Interval newInterval){
vector<Interval>::iterator it=intervals.begin();
vector<Interval>::iterator it_head=it;  //head of earse item

while(it != intervals.end()){
if(newInterval.end<it->start){
it=intervals.erase(it_head,it);
intervals.insert(it,newInterval);
return intervals;

}else if(newInterval.start>it->end){
it++;
it_head++;

}else{
newInterval.start=min(newInterval.start,it->start);
newInterval.end=max(newInterval.end,it->end);

it++;
}
}

if(it_head!=it)
it=intervals.erase(it_head,it);
intervals.insert(intervals.end(), newInterval);
return intervals;

}
};
0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：105187次
• 积分：6714
• 等级：
• 排名：第3493名
• 原创：589篇
• 转载：2篇
• 译文：0篇
• 评论：2条
评论排行
最新评论