description:
插入新的区间,涉及到区间的合并.
Note:
Example:
Example 1:
Input: intervals = [[1,3],[6,9]], newInterval = [2,5]
Output: [[1,5],[6,9]]
Example 2:
Input: intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]
Output: [[1,2],[3,10],[12,16]]
Explanation: Because the new interval [4,8] overlaps with [3,5],[6,7],[8,10].
answer:
class Solution {
public:
vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
int n = intervals.size(), cur = 0;
vector<vector<int>> res;
while (cur < n && intervals[cur][1] < newInterval[0]) {
res.push_back(intervals[cur++]);
}
while (cur < n && intervals[cur][0] <= newInterval[1]) {
newInterval[0] = min(newInterval[0], intervals[cur][0]);
newInterval[1] = max(newInterval[1], intervals[cur][1]);
++cur;
}
res.push_back(newInterval);
while (cur < n) {
res.push_back(intervals[cur++]);
}
return res;
}
};
relative point get√:
hint :
第一个循环把不和给定新区间重叠的,应该放在新区间前面的区间先放在答案里
第二个循环处理有重叠的部分,一直到后边最后一个没有重叠了退出
最后一个循环将新区间后边的没有重叠的放到答案里