struct Interval{
int start;
int end;
Interval() :start(0), end(0){}
Interval(int s, int e) :start(s), end(e){}
};
vector<Interval> insert(vector<Interval> &intervals, Interval newInterval)
{
//关键是搞清不同元素之间是否有重叠
vector<Interval>::iterator it = intervals.begin();
while (it != intervals.end())
{
if (newInterval.end > it->start)
{
intervals.insert(it, newInterval);
return intervals;
}
else if (it->end > newInterval.start)
{
it++;
continue;
}
else
{
newInterval.start = min(it->start, newInterval.start);
newInterval.end = min(it->end, newInterval.end);
}
}
//如果将最后一个元素归并了
intervals.insert(intervals.end(), newInterval);
return intervals;
}