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