這是一個典型的模擬題目,區間可以分成三部分
有交集的部分需要處理合成一個區間,這裏邊界條件比較多。寫的時候需要特別小心
class Solution {
public:
vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
vector<vector<int>> res;
int n = intervals.size();
int i = 0;
while(i<n&&intervals[i][1]<newInterval[0]) res.push_back(intervals[i++]); // 處理開頭沒有相交
if(i==n){
res.push_back(newInterval);
return res;
}
int left = min(intervals[i][0],newInterval[0]);
while(i<n&&intervals[i][1]<newInterval[1]) i++; // 處理相交部分,相交部分合成一個
if(i<n&&newInterval[1]>=intervals[i][0]) res.push_back({left,intervals[i++][1]});
else res.push_back({left,newInterval[1]});
while(i<n) res.push_back(intervals[i++]); // 處理後面沒有相交
return res;
}
};