插入区间--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;
    }
};
相关推荐
:-)6 小时前
算法-归并排序
java·开发语言·数据结构·算法·排序算法
Jerry10 小时前
LeetCode 101. 对称二叉树
算法
可编程芯片开发11 小时前
基于MPPT最大功率跟踪的离网光伏发电系统Simulink建模与仿真
算法
AI科技星11 小时前
线性算子不是空间映射函数,是全域双螺旋场之间拉伸、旋转、耦合、坍缩的跨空间标准化变换载体《全域数学vs传统数学:人类文明进阶200讲》第80讲
线性代数·算法·矩阵·数据挖掘·回归·乖乖数学·全域数学
米罗篮11 小时前
矩阵快速幂 (Exponentiation By Squaring Applied To Matrices)
c++·线性代数·算法·矩阵
dream_home840711 小时前
图像算法模型NPU适配与算法服务实战指南
人工智能·python·算法·npu 图像服务
大鱼>12 小时前
多宠物家庭智能管理平台:云端架构与多设备协同实战
python·算法·iot·宠物
To_OC13 小时前
LC 22 括号生成:刷完这道题,我终于搞懂回溯剪枝了
javascript·算法·leetcode
To_OC13 小时前
LC 39 组合总和:回溯入门必刷题,我踩过的两个坑都在这了
javascript·算法·leetcode
数字杂技师13 小时前
每条推荐都很准,为什么我还是越刷越无聊?
算法