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

【leetcode面试经典150题】50. 插入区间(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C++语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致)

【题目描述】

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

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

返回插入之后的 intervals

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

【示例一】

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

【示例二】

输入: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]重叠。

【提示及数据范围】

  • 0 <= intervals.length <= 10的4次方
  • intervals[i].length == 2
  • 0 <= starti <= endi <= 10的5次方
  • intervals 根据 starti 按 升序 排列
  • newInterval.length == 2
  • 0 <= start <= end <= 10的5次方

【代码】

class Solution {
public:vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {int left = newInterval[0];int right = newInterval[1];bool placed = false;vector<vector<int>> ans;for (const auto& interval: intervals) {if (interval[0] > right) {// 在插入区间的右侧且无交集if (!placed) {ans.push_back({left, right});placed = true;                    }ans.push_back(interval);}else if (interval[1] < left) {// 在插入区间的左侧且无交集ans.push_back(interval);}else {// 与插入区间有交集,计算它们的并集left = min(left, interval[0]);right = max(right, interval[1]);}}if (!placed) {ans.push_back({left, right});}return ans;}
};
http://www.lryc.cn/news/338248.html

相关文章:

  • 第二期书生浦语大模型训练营第三次笔记
  • SpringMVC(一)【入门】
  • SQL Server详细使用教程
  • Spring Boot项目启动时执行指定的方法
  • 红豆Cat 1开源|项目三: 从0-1设计一款HTTP版本RTU(支持GNSS)产品的软硬件全过程
  • 在 Mac 上配置高级内容缓存设置
  • 算法与数据结构 顺序栈(C++)
  • 【WSL】在WIN11安装并使用Linux子系统(Ubuntu)
  • 【vim 学习系列文章 20 -- a:mode 的值有哪些?】
  • sed命令多行处理
  • Secure Copy Protocol or SCP - 安全拷贝协议
  • Java面试题:什么是Java的值传递和引用传递?列举其应用场景,并说明其特点
  • Java 基于微信小程序的智能停车场管理小程序
  • python基础——类型注解【变量,函数,Union】
  • 人工智能研究生前置知识—科学计算库numpy
  • element UI 设置type=“textarea“ 禁止输入框缩放
  • Rust腐蚀服务器常用参数设定详解
  • 无人机巡检技术革命性变革光伏电站运维管理
  • 【学习】软件信创测试中,如何做好兼容性适配
  • 阿里云ACK k8s集群迁移
  • 1.3 字符设备驱动
  • 计算机毕业设计springboot小区物业报修管理系统m8x57
  • 深度学习体系结构——CNN, RNN, GAN, Transformers, Encoder-Decoder Architectures算法原理与应用
  • js 数字的常用方法梳理
  • STM32H743VIT6使用STM32CubeMX通过I2S驱动WM8978(5)
  • Objective-C学习笔记(block,协议)4.10
  • AD7982BRMZRL7 二进制 500kSPS 模数转换芯片 ADI
  • 采集某新闻网资讯网站保存PDF
  • 03攻防世界-unserialize3
  • 蓝桥杯备考随手记: 常见的二维数组问题