题目:
解答:
原区间是有序 并且无重合的。现在插入一个新的区间。
首先 按照start的大小,进行区间插入。
然后 在进行合并。
代码:
class Solution {
public:
vector<Interval> insert(vector<Interval> &intervals, Interval newInterval) {
int begin, end;
bool flag = false;
vector<Interval> res;
vector<Interval>::iterator it;
//区间插入
for ( it = intervals.begin(); it != intervals.end(); it++)
{
if (newInterval.start <= it->start)
{
intervals.insert(it, newInterval);
flag = true;
break;
}
}
//如果没有插入 在加入到最后
if (flag == false)
intervals.push_back(newInterval);
begin = intervals[0].start;
end = intervals[0].end;
//区间合并
for (int i = 1; i < intervals.size(); i++)
{
if (intervals[i].start > end)
{
Interval *temp = new Interval(begin, end);
res.push_back(*temp);
begin = intervals[i].start;
end = intervals[i].end;
}
else
{
end = intervals[i].end > end ? intervals[i].end : end;
}
}
Interval *temp = new Interval(begin, end);
res.push_back(*temp);
return res;
}
};