题目比较简单 但是考虑的点需要详尽了 不多说 直接上代码 自己写的代码 有些冗余
大佬有想法的话可以留言给我更正
/**
* Definition for an interval.
* struct Interval {
* int start;
* int end;
* Interval() : start(0), end(0) {}
* Interval(int s, int e) : start(s), end(e) {}
* };
*/
class Solution
{
public:
vector<Interval> insert(vector<Interval>& intervals, Interval newInterval)
{
if(intervals.empty())
return {newInterval};
vector<Interval> res;
int index=-1;
for(int i=0;i<intervals.size();++i)
{
if(intervals[i].end<newInterval.start)
{
res.push_back(Interval(intervals[i].start,intervals[i].end));
if(i==intervals.size()-1)
res.push_back(newInterval);
continue;
}
struct Interval inte;
inte.start=min(intervals[i].start,newInterval.start);
if(intervals[i].end>=newInterval.end)
{
if(intervals[i].start>newInterval.end)
{
inte.end=newInterval.end;
index=i;
}
else
{
inte.end=intervals[i].end;
index=i+1;
}
res.push_back(inte);
break;
}
else
{
for(int j=i+1;j<intervals.size();++j)
{
if(intervals[j].start>newInterval.end)
{
inte.end=newInterval.end;
index=j;
break;
}
else if(intervals[j].end<newInterval.end)
continue;
else
{
inte.end=intervals[j].end;
index=j+1;
break;
}
}
inte.end=max(inte.end,newInterval.end);
res.push_back(inte);
break;
}
}
for(;index<intervals.size();++index)
res.push_back(intervals[index]);
return res;
}
};