这是一个典型的模拟题目,区间可以分成三部分
有交集的部分需要处理合成一个区间,这里边界条件比较多。写的时候需要特别小心
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; } };
