力扣57. 插入区间
2023-12-21 06:57:10
双指针法
- 思路:
- 用待插入区间左右边界初始化双指针 left 和 right;
- 遍历待归并区间:
- 如果元素整体边界在 [left, right] 左侧(item[1] < left),则将给元素插入结果数组中;
- 如果元素整体边界在 [left, right] 右侧 (item[0] > right),则将 {left, right} 区间插入结果数组;
- 如果在 [left, right] 之间,更新 left 和 right (左者更左,右者更右);
- 注意遍历完之后 {left, right} 是否插入结果数组中;
class Solution {
public:
vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
int left = newInterval[0];
int right = newInterval[1];
bool mark = false;
std::vector<std::vector<int>> result;
for (const auto & item: intervals) {
if (item[0] > right) {
if (!mark) {
result.push_back({left, right});
mark = true;
}
result.push_back(item);
} else if (item[1] < left) {
result.push_back(item);
} else {
left = std::min(left, item[0]);
right = std::max(right, item[1]);
}
}
if (!mark) {
result.push_back({left, right});
}
return result;
}
};
文章来源:https://blog.csdn.net/N_BenBird/article/details/135120268
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!