【每日一题】57. 插入区间
【每日一题】57. 插入区间
- 57. 插入区间
- 题目描述
- 解题思路
57. 插入区间
题目描述
给你一个 无重叠的 ,按照区间起始端点排序的区间列表。
在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。
示例 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] 重叠。
示例 3:
输入:intervals = [], newInterval = [5,7]
输出:[[5,7]]
示例 4:
输入:intervals = [[1,5]], newInterval = [2,3]
输出:[[1,5]]
示例 5:
输入:intervals = [[1,5]], newInterval = [2,7]
输出:[[1,7]]
提示:
0 <= intervals.length <= 104
intervals[i].length == 2
0 <= intervals[i][0] <= intervals[i][1] <= 105
intervals 根据 intervals[i][0] 按 升序 排列
newInterval.length == 2
0 <= newInterval[0] <= newInterval[1] <= 105
解题思路
思路:将新区间插入区间列表,再按照56合并区间方法合并区间。
class Solution {
public:vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {// 将新区间加入区间列表intervals.push_back(newInterval);// 区间按照左端点排序sort(intervals.begin(),intervals.end());// 合并区间咯int n=intervals.size();// 结果区间vector<vector<int>> res;res.push_back(intervals[0]);for(int i=1;i<n;i++){if(intervals[i][0]>res.back()[1])res.push_back(intervals[i]);elseres.back()[1]=max(res.back()[1],intervals[i][1]);}return res;}
};
优化:原本区间列表已经有序,那么可以利用该信息进行合并。将原有区间列表分为三部分,第一部分是无重叠部分,第二部分是有重叠部分,第三部分是无重叠部分,可以通过绘制线形图直观表示。
class Solution {
public:vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {int n=intervals.size();int i=0;vector<vector<int>> res;// 第一部分无重叠区间while(i<n&&newInterval[0]>intervals[i][1]){res.push_back(intervals[i]);i++;}// 第二部分重叠区间 相当于将新区间与重叠区间不断合并然后更新合并区间// [[1,2],[3,5],[6,7],[8,10],[12,16]]while(i<n&&newInterval[1]>=intervals[i][0]){newInterval[0]=min(newInterval[0],intervals[i][0]);newInterval[1]=max(newInterval[1],intervals[i][1]);i++;}// [[1,5]] [6,8] 即直接合并该newIntervalres.push_back(newInterval);// 第三部分无重叠区间while(i<n){res.push_back(intervals[i]);i++;}return res;}
};
总结:注意,因为原有区间列表有序,故当第一部分无重叠区间处理完毕后,后面即为第二部分有重叠区间,此时满足newInterval[0]<interval[i][1],那么有重叠区间的条件即为newInterval[1]>=interval[i][0],此时将新区间逐个与各个重叠区间进行合并,同时更新新区间,这样才能得到最后合并后的大区间。注意[[1,5]] [6,8] 即直接合并该newInterval。
相关文章:
【每日一题】57. 插入区间
【每日一题】57. 插入区间 57. 插入区间题目描述解题思路 57. 插入区间 题目描述 给你一个 无重叠的 ,按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可…...
youtubu视频下载和yt-dlp 使用教程
参考:https://zhuanlan.zhihu.com/p/618467617,使用 yt-dlp 下载 youtube 视频的一点体会 安装yt-dlp 1. 安装Python和ffmpeg Python:安装时把pip和添加系统环境变量都选上 ffmpeg:下载好exe文件,把目录添加到系统环…...
——滑动窗口
滑动窗口 所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果。也可以理解为一种双指针的做法。 leetcode76 class Solution {public String minWindow(String s, String t) {char[] schars s.toCharArray();char[] tc…...
【C++进阶】模板进阶
👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞…...
Vim如何清空文件
在Vim中,可以使用以下命令清空文件内容: 打开需要清空的文件:在终端中输入vim filename打开文件,其中filename是你要编辑的文件名。 进入命令模式:按下键盘上的Esc键,确保处于Vim的命令模式。(…...
问道管理:什么信号?煤飞色舞钢花溅
近期重磅利好不断,对应到A股商场,究竟哪个板块最获益,商场讨论热烈。 地产分析师:方针力度超预期,主张加仓。 银行分析师:存量房贷对银行股心情上的压制完毕,值得重视。 消费分析师ÿ…...
C# PaddleDetection yolo 印章检测
效果 项目 代码 using OpenCvSharp; using OpenCvSharp.Extensions; using Sdcb.PaddleDetection; using Sdcb.PaddleInference; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq…...
常用框架分析(7)-Flutter
框架分析(7)-Flutter 专栏介绍Flutter核心思想Flutter的特点快速开发跨平台高性能美观的用户界面 Flutter的架构框架层引擎层平台层 开发过程使用Dart语言编写代码编译成原生代码热重载工具和插件 优缺点优点跨平台开发高性能美观的用户界面热重载强大的…...
清空 Docker 容器的日志文件
删除容器中netcore控制台存储到docker日志记录 在shell命令下执行如下语句: docker ps -aq | xargs docker inspect --format{{.LogPath}} | xargs truncate -s 0 这个命令会执行以下操作: docker ps -aq:列出所有容器的ID(包括…...
01-虚拟机安装Windows Server操作系统
1、创建并配置虚拟机 2、安装操作系统 找到windows Server镜像 等待安装 3、设置密码...
应用案例 | 基于三维机器视觉的机器人麻袋拆垛应用解决方案
Part.1 项目背景 在现代物流和制造行业中,麻袋的拆垛操作是一个重要且频繁的任务。传统的麻袋拆垛工作通常由人工完成,分拣效率较低,人力成本较高,现场麻袋堆叠、变形严重,垛型不规则、不固定,严重影响分…...
1018 Public Bike Management 结题记录(dfs剪枝)
个人觉得直接放入代码是最管用的。 其他方法类似,题意请参考其他博主。 #include <bits/stdc.h> using namespace std; const int N 1e4 50;int maxn 2000000000; int c, n, ed, s[N], m, minlen, needn, backn, pre[N]; bool flag, book[N]; vector<p…...
C++ deque底层原理
deque底层原理 一、目的二、底层实现三、原理图四、类结构五、push_back六、pop_back 一、目的 实现双端数组 二、底层实现 双向开口的连续线性空间 三、原理图 四、类结构 class deque : protected Deque base _Deque_base._Deque_impl M_map 指针数组 _M_map_size …...
打破对ChatGPT的依赖以及如何应对ChatGPT的错误和幻觉
OpenAI的ChatGPT是第一个真正流行的生成式AI工具,但它可能不是最好的。现在是时候扩大你的AI视野了。 ChatGPT成为了基于大语言模型(LLM)的聊天机器人的同义词。但是现在是时候停止对ChatGPT的痴迷,开始发现这个新世界中强大的替代品了。 首先&a…...
【git】【IDEA】在idea中使用git
目录 一、 在IDEA中配置git 二、 获取git仓库 2.1 本次初始化仓库 2.2 从远程仓库克隆 三、 本地仓库操作 3.1 将文件加入暂存区 3.2 将暂存区的文件提交到版本库 3.3 快捷键 使用快捷键 实现加入到暂存区与提交到版本库 3.4 查看日志 Show History 四、 远程仓库操…...
【设计模式】装饰者模式
目录 一、定义二、结构三、优点四、使用场景五、代码示例六、截图示例 一、定义 1.在不改变现有对象结构的情况下,动态给该对象添加额外功能的模式 2.类B继承于类A,并将类A作为B类的属性(B类聚合A类) 3.BufferedInputStream、Buff…...
open cv快速入门系列---数字图像基础
目录 一、数字图像基础 1.1 数字图像和图像单位 1.2 区分图片分辨率与屏幕分辨率 1.3 图像的灰度与灰度级 1.4 图像的深度 1.5 二值图像、灰度图像与彩色图像 1.6 通道数 二、数字图像处理 2.1 图像噪声及其消除 2.2 数字图像处理技术 2.2.1 图像变换 2.2.2 图像增强…...
基础知识回顾:借助 SSL/TLS 和 NGINX 进行 Web 流量加密
原文作者: Robert Haynes 原文链接: 基础知识回顾:借助 SSL/TLS 和 NGINX 进行 Web 流量加密 NGINX 唯一中文官方社区 ,尽在 nginx.org.cn 网络攻击者肆无忌惮、作恶多端,几乎每天都有网络入侵、数据窃取或勒索软件攻击…...
iPhone 14 Plus与iPhone 14 Pro:你应该买哪一款
又到了iPhone季,这意味着你可能会在几种不同的机型之间左右为难,无法决定买哪一款。更令人困惑的是,苹果推出的iPhone变体——iPhone 14 Plus,只比老款iPhone 14 Pro低100美元。 有这么多选择,你可能想知道哪款iPhone最适合你。你应该买一部大屏幕的iPhone 14 Plus并节省…...
操作系统清华同步笔记:定义概述+计算机内存和硬盘布局+启动流程顺序+中断、异常和系统调用
定义概述 从用户角度来看,操作系统是一个控制软件,用以管理应用程序,为应用程序提供服务,杀死应用程序等。从内部文件角度来看,操作系统是一个资源管理器,用以管理外设,分配资源。层次结构&…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙
Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...
Linux安全加固:从攻防视角构建系统免疫
Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...
