您的位置:首页 > 其它

57. Insert Interval

2016-08-27 21:57 141 查看
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]
.

已知一个区间集合(已经排好序且不相交),求并入一个新区间后得到的区间集合。新建一个vector对象用来保存结果,然后与新区间不相交的直接插入,相交的并成一个区间插入。

代码:

class Solution
{
public:
vector<Interval> insert(vector<Interval>& intervals, Interval newInterval)
{
vector<Interval>ret;
vector<Interval>::iterator it;
int s=newInterval.start,e=newInterval.end;
for(it=intervals.begin();it!=intervals.end();it++)
{
if((*it).end<newInterval.start)
{
ret.push_back(*it);
}
else
{
s=min(s,(*it).start);
break;
}
}
for(;it!=intervals.end();it++)
{
if((*it).start>newInterval.end)
{
break;
}
e=max(e,(*it).end);
}
ret.push_back(Interval(s,e));
for(;it!=intervals.end();it++)
{
ret.push_back(*it);
}
return ret;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vector interval