当前位置: 首页 > 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.dtcms.com/a/338536.html

相关文章:

  • Apache IoTDB:大数据时代时序数据库选型的技术突围与实践指南
  • 【力扣 Hot100】 刷题日记——双指针的经典应用
  • 论文阅读:Prompt Optimization in Large Language Models
  • @Linux问题 :bash fork Cannot allocate memory 错误分析与解决方案
  • Spring Boot 使用 单元测试(JUnit )教程
  • 【LeetCode题解】LeetCode 162. 寻找峰值
  • 什么是矩阵系统源码搭建定制化开发,支持OEM贴牌
  • AndroidR车机系统Settings数据库增加非持久化存储键值方案-续
  • 快手可灵招海外产品运营实习生
  • vue,H5车牌弹框定制键盘包括新能源车牌
  • word如何转换为pdf
  • 网络基础——Socket编程预备
  • 专题:2025母婴行业消费洞察与分龄营养趋势报告|附40 +份报告PDF、交互图表数据汇总下载
  • MongoDB知识速查
  • uni-app页面使用u-view组件简化版列表页+详情页实现
  • 【最新版】CRMEB Pro版v3.4系统源码全开源+PC端+uniapp前端+搭建教程
  • Selenium自动化测试入门:cookie处理
  • C语言实战:从零开始编写一个通用配置文件解析器
  • Docker+Nginx+Node.js实战教程:从零搭建高可用的前后端分离项目
  • 阿里云参数配置化
  • Apache Doris 4.0 AI 能力揭秘(一):AI 函数之 LLM 函数介绍
  • Python训练营打卡 DAY 41 简单CNN
  • Apache IoTDB 大版本升级记录(成熟的2.0.2版本)
  • 100202Title和Input组件_编辑器-react-仿低代码平台项目
  • AI 小游戏批量生产工厂(Deepseek深度推理reasoner模型64K tokens)
  • 如何计算 PCM 音频与 YUV/RGB 原始视频文件大小?
  • Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
  • 在相机空间中落地动作:以观察为中心的视觉-语言-行动策略
  • OpenHarmony之打造全场景智联基座的“分布式星链 ”WLAN子系统
  • 如何理解关系型数据库的ACID?