几个注意点
1.原集合为空
2.插入在最开始的位置
3.插入在末尾位置
4.插入在中间
- 与前区间重叠但不与后区间重叠
- 不与前区间重叠但与后区间重叠
- 前后区间都重叠
- 前后区间都不重叠
可以通过添加标志,没有添加就每次都去判断重叠情况进行添加
vector<Interval> insert(vector<Interval>& intervals, Interval newInterval) {
vector<Interval> result ;
if( intervals.size() == 0 ){
result.push_back( newInterval );
return result ;
}
bool isAdd = false ;
for( int i = 0; i < intervals.size() ; i++ ){
if( !isAdd ){
if( intervals[i].start <= newInterval.start ){
result.push_back( intervals[i] );
if( newInterval.start <= intervals[i].end ){
result[result.size()-1].end = max(result[result.size()-1].end, newInterval.end );
isAdd = 1 ;
}
}
else{
if( result.size() > 0 && result[result.size()-1].end >= newInterval.start ){
result[result.size()-1].end = max(result[result.size()-1].end, newInterval.end );
} else{
result.push_back( newInterval );
}
isAdd = 1 ;
if( intervals[i].start <= newInterval.end ){
result[result.size()-1].end = max(result[result.size()-1].end, intervals[i].end );
}
else{
result.push_back(intervals[i]);
}
}
continue ;
}
if( intervals[i].start <= result[result.size()-1].end ){
result[result.size()-1].end = max(result[result.size()-1].end, intervals[i].end );
}else{
result.push_back( intervals[i] );
}
}
if( !isAdd ){
result.push_back( newInterval );
}
return result ;
}