插入区间--leetcode

  • 插入区间
    给你一个 无重叠的 ,按照区间起始端点排序的区间列表 intervals,其中 intervalsi = starti, endi
    表示第 i 个区间的开始和结束, 并且 intervals 按照 starti 升序排列。同样给定一个区间 newInterval =
    start, end 表示另一个区间的开始和结束。 在 intervals 中插入区间 newInterval,使得 intervals
    依然按照 starti 升序排列,且区间之间不重叠(如果有必要的话,可以合并区间)。 返回插入之后的
    intervals。

注意 你不需要原地修改 intervals。你可以创建一个新数组然后返回它。

示例 1:

输入:intervals = \[1,3,6,9], newInterval = 2,5

输出:\[1,5,6,9]

示例 2:

输入:intervals = \[1,2,3,5,6,7,8,10,12,16], newInterval = 4,8

输出:\[1,2,3,10,12,16]

解释:这是因为新的区间 4,83,5,6,7,8,10 重叠。

cpp 复制代码
class Solution {
public:
    vector<vector<int>> insert(vector<vector<int>> &intervals, vector<int> &newInterval) {
        vector<vector<int>> result;
        if (newInterval.empty()) {
            return intervals;
        }
        if (intervals.empty()) {
            result.push_back(newInterval);
            return result;
        }
        intervals.emplace_back(newInterval);
        sort(intervals.begin(), intervals.end());
        result.emplace_back(intervals.front());
        for (int i = 1; i < intervals.size(); ++i) {
            if (intervals[i].front() <= result.back().back()) {
                if (intervals[i].back() > result.back().back()) {
                    result.back().back() = intervals[i].back();
                }
            } else {
                result.emplace_back(intervals[i]);
            }
        }
        return result;
    }
};
相关推荐
天疆说1 分钟前
庞特里亚金极小值原理的详细推导
算法
余俊晖14 分钟前
Self-OPD:去掉教师机的流匹配模型 On-Policy 蒸馏
人工智能·算法·机器学习
手写码匠16 分钟前
华为云Flexus+DeepSeek征文|华为云MaaS DeepSeek推理服务 × Flexus云服务器 × Dify一键部署:性能评测实战
人工智能·深度学习·算法·aigc
啥都想学点的研究生1 小时前
一篇文章讲清楚:逻辑回归
算法·机器学习·逻辑回归
货拉拉技术2 小时前
Agent 场景下 Token 成本优化的实战技巧
算法
hahaha60162 小时前
HLS高层次综合设计技巧--循环merge和循环split
人工智能·算法·计算机视觉
JAI科研2 小时前
Deepseek Agent Harness教程(七) | Deepseek Harness不是一个内核加一堆插件
开发语言·人工智能·深度学习·算法·自然语言处理·transformer·vllm
集思广益的灰太狼3 小时前
变频器启动致PLC数据异常?西门子G120配合滤波器EMC抑制方案
人工智能·算法·工控·emc·电磁兼容·变频器·西门子
方方洛3 小时前
vllm教程-03-架构设计
算法·架构
玄昌盛不会编程3 小时前
LeetCode——2091. 从数组中移除最大值和最小值
java·算法·leetcode