/** * struct Interval { * int start; * int end; * Interval(int s, int e) : start(start), end(e) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param Intervals Interval类vector * @param newInterval Interval类 * @return Interval类vector */ vector<Interval> insertInterval(vector<Interval>& Intervals, Interval newInterval) { // write code here vector<Interval> ans; if(Intervals.size()==0) { ans.push_back(newInterval); return ans; } if(Intervals.size()==1) { Interval tmp; tmp.start= min(Intervals[0].start,newInterval.start); tmp.end = max(newInterval.end,Intervals[0].end); ans.push_back(tmp); return ans; } for(int i=0;i<Intervals.size();i++) { if(Intervals[i].end>=newInterval.start && i+1 <Intervals.size() ) { if(Intervals[i+1].start<=newInterval.end ) { Interval tmp; tmp.start= min(Intervals[i].start,newInterval.start); while(Intervals[i].end<=newInterval.end && i+1 <Intervals.size()) i++; tmp.end = max(Intervals[i].end,newInterval.end); ans.push_back(tmp); } else if(Intervals[i+1].start>newInterval.end) { Interval tmp; tmp.start= min(Intervals[i].start,newInterval.start); tmp.end = newInterval.end; ans.push_back(tmp); } } else ans.push_back(Intervals[i]); } return ans; } };