【数据结构-扫描线】力扣57. 插入区间

news2024/12/27 15:29:12

给你一个 无重叠的 ,按照区间起始端点排序的区间列表 intervals,其中 intervals[i] = [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,8] 与 [3,5],[6,7],[8,10] 重叠。

在这里插入图片描述

扫描线

class Solution {
public:
    vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
        vector<vector<int>> answer;
        int left = newInterval[0], right = newInterval[1];
        bool placed = false;
        for(auto interval : intervals){
            //区间在插入区间右侧
            if(interval[0] > right){
                if(!placed){
                    answer.push_back({left, right});
                    placed = true;
                }
                answer.push_back(interval);
            }
            else if(interval[1] < left){
                answer.push_back(interval);
            }
            else{
                left = min(left, interval[0]);
                right = max(right, interval[1]);
            }
        }
        if(!placed){
            answer.push_back({left, right});
        }
        return answer;
    }
};

这道题涉及到合并区间。我们首先遍历数组intervals,当某个区间和插入区间没有交集的时候,就直接push他,当有交集的时候,我们就要可以将这些区间和插入区间进行合并。

我们还设定了一个布尔值placed来判断这个区间的放置位置,当插入区间的最右边端点在遍历的区间的左侧的时候,那么这时候就不进行合并操作,就要将插入区间push,并且设置placed为true,然后再push遍历到的区间。

还有一种情况,插入区间的最右端点较大,以至于到最后一个区间进行的也是合并操作,这时候遍历结束,直接push经过合并的插入区间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2141187.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java数据存储结构——二叉查找树

文章目录 22.1.2二叉查找树22.1.2.1 概述22.1.2.1二叉查找树添加节点22.1.2.2二叉查找树查找节点22.1.2.3 二叉树遍历22.1.2.4 二叉查找树的弊端 22.1.2二叉查找树 22.1.2.1 概述 二叉查找树,又称二叉排序树或者二叉搜索树 二叉查找树的特点&#xff1a; 每一个节点上最多有…

25. 网格模型(三角形概念)

给大家演示网格模型Mesh渲染自定义几何体BufferGeometry的顶点坐标,通过这样一个例子帮助大家建立**三角形(面)**的概念 三角形(面) 网格模型Mesh其实就一个一个三角形(面)拼接构成。使用网格模型Mesh渲染几何体geometry&#xff0c;就是几何体所有顶点坐标三个为一组&#x…

【农信网-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

支持升降压型、升压、降压、60V的1.2MHz频率LED恒流驱动器LGS63040、LGS63042

前言&#xff1a; 一款支持升降压的LED驱动器。适合单节锂电池使用。当然不仅于此。SOT23-5封装的外形和丝印 特性 宽输入电压、宽输出电压范围&#xff1a;3.0V-60V 支持 PWM 调光及模拟调光 内置 60V/350mΩ低侧金属氧化物半导体场效应晶体管 1.2MHz固定工作频率 逐周期峰值…

MiniMaxi-共创智能新体验新手入门

新手快速入门 注册指南 个人用户 直接注册即可。 企业团队 主账号&#xff1a;注册时填写的姓名与手机号将成为企业账号的管理员。子账号&#xff1a;在用户中心创建&#xff0c;数量不限。 主账号与子账号权益 相同权益&#xff1a;子账号享有与主账号相同的使用权益和速…

积分电路和滤波电路的主要区别点和应用场合

文章目录 前言一、滤波电路的分类二、有源滤波器和无源滤波器的优缺点和实用范围三、积分电路3.1 无源积分电路3.2 RC充放电的电路响应3.2.1 RC电路的零状态响应3.2.2 RC电路的零输入响应3.2.3 RC电路的全响应3.2.4 选取合适的时间常数四 、无源RC低通滤波器4.3.1 截止频率推导…

AI 最佳实践全栈式从0到1开发个人博客系统

以下是「豆包 MarsCode 体验官」优秀文章&#xff0c;作者我喺小VIE。 前言 近年来随着人工智能&#xff08;AI&#xff09;大模型的迅猛发展&#xff0c;大模型在自然语言处理、计算机视觉、语音识别等领域的表现逐渐达到甚至超越人类的水平。在大模型的应用场景之下&#xf…

Gradio 中如何让 Chatbot 自动滚动

在 Gradio 中&#xff0c; Chatbot 是对话组件&#xff0c;接受 history 参数&#xff0c;在目前版本中 &#xff08;gradio4.44.0&#xff09;&#xff0c;不支持自动滚动&#xff0c;用起来很不方便&#xff0c;该功能在社区中已经提出了&#xff0c;目前该功能还没有发布。本…

Android Framework(六)WMS-窗口显示流程——窗口内容绘制与显示

文章目录 窗口显示流程明确目标 窗户内容绘制与显示流程窗口Surface状态完整流程图 应用端处理finishDrawingWindow 的触发 system_service处理WindowState状态 -- COMMIT_DRAW_PENDING本次layout 流程简述 窗口显示流程 目前窗口的显示到了最后一步。 在 addWindow 流程中&…

【ESP32】Arduino开发 | 中断矩阵+按键输入中断例程

对于中断矩阵的详细介绍会放在ESP-IDF开发文章中&#xff0c;跳转栏目目录可以找到对应文章。 1. API 1.1 绑定GPIO中断 attachInterrupt(uint8_t pin, voidFuncPtr handler, int mode); pin&#xff1a;管脚号&#xff1b;handler&#xff1a;中断处理函数&#xff1b;mode…

【OJ刷题】双指针问题5

这里是阿川的博客&#xff0c;祝您变得更强 ✨ 个人主页&#xff1a;在线OJ的阿川 &#x1f496;文章专栏&#xff1a;OJ刷题入门到进阶 &#x1f30f;代码仓库&#xff1a; 写在开头 现在您看到的是我的结论或想法&#xff0c;但在这背后凝结了大量的思考、经验和讨论 目录 1…

【Scala入门学习】基本数据类型和变量声明

1. 基本数据类型 scala 的基本类型有 9种&#xff1a; Byte、Char、Short、Int、Long、Float、Double、Boolean、Unit Scala中没有基本数据类型的概念&#xff0c;所有的类型都是对象。 AnyVal&#xff1a;代表所有基本类型。 AnyRef&#xff1a;代表所以引用类型&#xff…

基于微信小程序的科创微应用平台设计与实现+ssm(lw+演示+源码+运行)

基于微信小程序的科创微应用平台 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了基于微信小程序的科创微应用平台的开发全过程。通过分析基于微信小程序的科创微应用平台管理的不足&#xff0c;创建了一个计…

【VMvare虚拟机-Ubuntu】解决内存不足问题

VMvare虚拟机-Ubuntu&#xff1a;解决内存不足问题 1 虚拟机额度磁盘分配2 原因&#xff1a;扩展内存导致无法正常开机3 解决方案&#xff1a;硬盘扩容后无法正常开机3.1 选择镜像文件3.2 设置光盘启动优先3.3 在 live 系统中扩容分区3.4 开启虚拟机 另&#xff1a;VMWare虚拟机…

Java读取损坏的xls表格

Java读取损坏的xls表格 1. 损坏的文件1.1 正常的xls文件用360解压后是这样↓1.2 被损坏的xls文件用360解压后是这样↓ 2. Java代码读取Excel文件分析2.1 使用EasyExcel读取损坏的xls文件报错2.2 使用POI读取损坏的xls文件报错 3. 损坏文件修复方案4. 代码 由于不可抗原因在网站…

C语言中数据类型

一、C 语言中数据类型 基本数据类型&#xff1a; 整型&#xff08;int&#xff09;&#xff1a;用于存储整数&#xff0c;如&#xff1a;1、2、3等。字符型&#xff08;char&#xff09;&#xff1a;用于存储单个字符&#xff0c;如&#xff1a;‘a’、‘b’、c’等。浮点型&a…

华为地图服务功能概览 -- HarmonyOS自学7

华为地图服务式Harmony OS生态下的一个地图服务&#xff0c;为开发者提供强大而便捷的地图能力&#xff0c;助力全球开发者实现个性化地图呈现&#xff0c;地图搜索和路线规划功能。 主要包括七大功能&#xff1a;静态图&#xff0c;场景化控件&#xff0c;地点搜索&#xff0c…

【AIGC】CFG:基于扩散模型分类器差异引导

摘要 分类器指导是最近引入的一种方法&#xff0c;在训练后在条件扩散模型中权衡模式覆盖率和样本保真度&#xff0c;在精神上与其他类型的生成模型中的低温采样或截断相同。分类器引导将扩散模型的分数估计与图像分类器的梯度相结合&#xff0c;因此需要训练与扩散模型分离的…

WLAN实验简述

一&#xff1a;配置生产AP1上级接入层交换机LSW3 sys [Huawei]sysname LSW3 [LSW3]undo info-center enable [LSW3]vlan batch 10 100 [LSW3]int g0/0/2 [LSW3-GigabitEthernet0/0/2]port link-type trunk [LSW3-GigabitEthernet0/0/2]port trunk allow-pass vlan 10 100 [LSW…

【爱给网-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…