当前位置: 首页 > news >正文

力扣57:插入区间

力扣57:插入区间

  • 题目
  • 思路
  • 代码

题目

给你一个 无重叠的 ,按照区间起始端点排序的区间列表 intervals,其中 intervals[i] = [starti, endi] 表示第 i 个区间的开始和结束,并且 intervals 按照 starti 升序排列。同样给定一个区间 newInterval = [start, end] 表示另一个区间的开始和结束。

在 intervals 中插入区间 newInterval,使得 intervals 依然按照 starti 升序排列,且区间之间不重叠(如果有必要的话,可以合并区间)。

返回插入之后的 intervals。

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

思路

这道题和56题合并区间是相同的思路,只不过一个是合并一个是插入。我们还是先思考两个区间之间存在着什么样的关系,两个区间其实只有重叠和不重叠两种关系,或者是重叠就是一个区间的左边界大于另外一个区间的左边界但是小于它的右边界,而不重叠就是一个区间的左边界大于另外一个区间的右边界或者一个区间的右边界小于另外一个区间的左边界。理清了这些关系后这道题就好做了。
那么这道题和56题不同的地方在什么呢?在于我们需要插入一个新区间所以我们必须判断什么时候插入这个新区间,其实就两种情况一是有比我们还大的区间也就是左边界都已经大于我们的右边界了或者是我们直到最后发现新区间还没有插入也就是说新区间是最后的区间的情况下。所以我们需要定义一个bool类型来判断新区间是否插入了如果在最后发现它没插入我们就需要将其插入

代码

class Solution {
public:vector<vector<int>> insert(vector<vector<int>>& intervals,vector<int>& newInterval) {int L = newInterval[0];int R = newInterval[1];vector<vector<int>> res;bool isInsert = false;for (int i = 0; i < intervals.size(); i++) {// 其实一共就三种情况// 右边界小于L,直接插入if (intervals[i][1] < L) {res.push_back(intervals[i]);}// 左边界大于R,先插入[L,R]再插入当前区间else if (intervals[i][0] > R) {if (isInsert == false) {res.push_back({L, R});isInsert = true;}res.push_back(intervals[i]);}// 右边界大于L,但是小于R或者左边界小于R但是右边界大于R,直接更新else {L = min(L, intervals[i][0]);R = max(R, intervals[i][1]);}}// 如果插入区间还没插入就说明它就是最后一个区间if (isInsert == false) {res.push_back({L, R});}return res;}
};
http://www.xdnf.cn/news/1328509.html

相关文章:

  • 决策树剪枝及数据处理
  • AI 药物发现:化学分子到机器学习数值特征的转化——打通“化学空间”与“模型空间”关键路径
  • 【Git 子模块与动态路由映射技术分析文档】
  • Matplotlib数据可视化实战:Matplotlib子图布局与管理入门
  • 疏老师-python训练营-Day50预训练模型+CBAM注意力
  • PCL+Spigot服务器+python进行MC编程(使用Trae进行AI编程)---可以生成彩虹
  • Hugging Face 核心组件介绍
  • 35岁对工作的一些感悟
  • Ansible 中的文件包含与导入机制
  • noetic版本/ubuntu20 通过moveit控制真实机械臂
  • 常见的对比学习的损失函数
  • DataAnalytics之Tool:Metabase的简介、安装和使用方法、案例应用之详细攻略
  • 数字ic后端设计从入门到精通14(含fusion compiler, tcl教学)半定制后端设计
  • plantsimulation知识点25.8.19 工件不在RGV中心怎么办?
  • c#联合halcon的基础教程(案例:亮度计算、角度计算和缺陷检测)(含halcon代码)
  • 力扣面试150(60/150)
  • 机器学习之决策树:从原理到实战(附泰坦尼克号预测任务)
  • Mac(七)右键新建文件的救世主 iRightMouse
  • 大数据MapReduce架构:分布式计算的经典范式
  • 20250819 强连通分量,边双总结
  • 从线性回归到神经网络到自注意力机制 —— 激活函数与参数的演进
  • 人工智能统一信息结构的挑战与前景
  • 比赛准备之环境配置
  • 进程间的通信1.(管道,信号)
  • LINUX 软件编程 -- 线程
  • 决策树(续)
  • LeetCode100-560和为K的子数组
  • 决策树1.1
  • 项目一系列-第5章 前后端快速开发
  • 项目管理.管理理念学习