每日Leetcode

楼主: abcd991276 (QQ)   2023-01-16 14:49:45
57. Insert interval
题目就是一堆数学的interval要插入一个新的
插入新的要把有重叠的合并
他原本就有排序了
策略就是没有重叠就放进去
有重叠区间就变两个合并在继续循环
发现剩下的区间都跟前面合并的不重叠就把合并的放进去
然后再放剩下不重叠的
class Solution {
public:
vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newI
nterval) {
if (intervals.size() == 0)
return {newInterval};
vector<vector<int>> ans;
vector<int> insert_temp = newInterval;
int push_insert_temp = 0;
for (auto &interval:intervals){
if (interval[0] > insert_temp[1] || interval[1] < insert_temp[0]){
if (interval[0] > insert_temp[1] && !push_insert_temp){
ans.emplace_back(insert_temp);
push_insert_temp = 1;
}
ans.emplace_back(interval);
}else{
insert_temp[0] = min(interval[0], insert_temp[0]);
insert_temp[1] = max(interval[1], insert_temp[1]);
}
}
if (!push_insert_temp)
ans.emplace_back(insert_temp);
return ans;
}
};
作者: pandix (面包屌)   2023-01-16 15:04:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com