题目:
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].
程序:
bool comp(const Interval &in1,const Interval &in2){
if(in1.start==in2.start){
return in1.end<in2.end;
}else{
return in1.start<in2.start;
}
}
class Solution {
public:
vector<Interval> insert(vector<Interval> &intervals, Interval newInterval) {
//You may assume that the intervals were initially sorted according to their start times.
intervals.push_back(newInterval);
sort(intervals.begin(),intervals.end(),comp); //按start升序排序
vector<Interval> res;
int len = intervals.size();
for(int i=0;i<len;i++){
if(res.empty()){
res.push_back(intervals[i]);
}else{
Interval last = res.back();
if(last.end>=intervals[i].start){
res.pop_back();
last.end = max(last.end,intervals[i].end);
res.push_back(last);
}else{
res.push_back(intervals[i]);
}
}
}
return res;
}
};
点评:
与上一题类似