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

贪心算法之合并区间

“任世界多宽广,停泊在这港口~” 


        区间问题,涉及到最多的就是 取交集 和 并集的概念。我们使用C++排序算法后,其默认规则就是按照 “左排序”进行的。因而,我们实质上注意的是每一个区间的 右端点,根据题目要求,总结规律,指定出策略解决问题。

合并区间

(1) 题目解析 

(2) 算法原理  

class Solution {
public:vector<vector<int>> merge(vector<vector<int>>& intervals) {sort(intervals.begin(),intervals.end());vector<vector<int>> res;int n = intervals.size();// 取左右端点int left = intervals[0][0],right = intervals[0][1];for(int i=1;i<n;++i){int a = intervals[i][0],b = intervals[i][1];if(a <= right){// 有重合区间right = max(right,b);}else{// 更新res.push_back({left,right});left = a;right = b;}}// 最后一组 区间 也需要被插入res.push_back({left,right});return res;}
};

证明:

        因为,我们默认了排完序之后,所有的左端点,能合并的,都是连续的。所以,我们使用反证法设:左端点排完序后,不连续

        所以,我们按照左端点排完序后,一旦将区间合并,那么其一顶是连续的。

无重叠区间

(1) 题目解析

(2) 算法原理

class Solution {
public:int eraseOverlapIntervals(vector<vector<int>>& intervals) {sort(intervals.begin(),intervals.end());int n = intervals.size();int ret = 0;int left = intervals[0][0],right = intervals[0][1];for(int i=1;i<n;++i){int a = intervals[i][0],b = intervals[i][1];if(a < right){// 存在重叠 保留小范围的ret++;right = min(right,b);}else{// 不存在重叠 新的开始right = b;}}return ret;}
};

证明:

        这样的贪心策略是否正确呢 ?我们假设贪心解是错误的。所以,我们会得到两份答案,一份是贪心解,一份是最有解:

⽤最少数量的箭引爆⽓球

(1) 题目解析

(2) 算法原理

 

class Solution {
public:int findMinArrowShots(vector<vector<int>>& points) {sort(points.begin(),points.end());int n = points.size();int left = points[0][0],right = points[0][1];int ret = 1; // 第一个区间就需要引爆for(int i=1;i<n;++i){int a = points[i][0],b = points[i][1];if(a <= right){// 重叠的 可以一支箭引爆right = min(right,b);}else{ret++; // 不是重叠 需要一支箭引爆right = b;}}return ret;}
};

        


本篇到此结束,感谢你的阅读。

祝你好运,向阳而生~

相关文章:

贪心算法之合并区间

“任世界多宽广&#xff0c;停泊在这港口~” 区间问题&#xff0c;涉及到最多的就是 取交集 和 并集的概念。我们使用C排序算法后&#xff0c;其默认规则就是按照 “左排序”进行的。因而&#xff0c;我们实质上注意的是每一个区间的 右端点&#xff0c;根据题目要求&#xff…...

Eclipse - Colors and Fonts

Eclipse - Colors and Fonts References 编码最好使用等宽字体&#xff0c;Ubuntu 下自带的 Ubuntu Mono 可以使用。更换字体时看到名字里面带有 Mono 的基本都是等宽字体。 Window -> Preferences -> General -> Appearance -> Colors and Fonts -> C/C ->…...

java 数据结构LinkedList类

目录 什么是LinkedList 链表的概念及结构 链表的结构 无头单向非循环链表 addFirst方法&#xff08;头插法&#xff09; addLast方法&#xff08;尾插法&#xff09; addIndex方法 contains方法 removeAllKey方法 size和clear方法 链表oj题 无头双向非循环链表 ad…...

第五次作业(防御安全)

需求: 1.办公区设备可以通过电信链路和移动链路上网&#xff08;多对多的NAT&#xff0c;并且需要保留一个公网IP 不能用来转换&#xff09; 2.分公司设备可以通过总公司的移动链路和电信链路访问到DMZ区的http服务器 3.分公司内部的客户端可以通过公网地址访问到内部的服务…...

阿里云香港轻量应用服务器是什么线路?

阿里云香港轻量应用服务器是什么线路&#xff1f;不是cn2。 阿里云香港轻量服务器是cn2吗&#xff1f;香港轻量服务器不是cn2。阿腾云atengyun.com正好有一台阿里云轻量应用服务器&#xff0c;通过mtr traceroute测试了一下&#xff0c;最后一跳是202.97开头的ip&#xff0c;1…...

C# Winform .net6自绘的圆形进度条

using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms;namespace Net6_GeneralUiWinFrm {public class CircularProgressBar : Control{private int progress 0;private int borderWidth 20; // 增加的边框宽度public int Progr…...

Git基本操作(超详细)

文章目录 创建Git本地仓库配置Git配置命令查看是否配置成功重置配置 工作区、暂存区、版本库添加文件--场景一概述实例操作 查看.git文件添加文件--场景二修改文件版本回退撤销修改情况⼀&#xff1a;对于工作区的代码&#xff0c;还没有 add情况⼆&#xff1a;已经 add &#…...

【AGI视频】Sora的奇幻之旅:未来影视创作的无限可能

在五年后的未来&#xff0c;科技的发展为影视创作带来了翻天覆地的变化。其中&#xff0c;Sora视频生成软件成为了行业的翘楚&#xff0c;引领着全新的创作潮流。Sora基于先进的Transformer架构&#xff0c;将AI与人类的创造力完美结合&#xff0c;为观众带来了前所未有的视听盛…...

Docker部署nginx

搜索镜像 docker search nginx 下载拉取nginx镜像 docker pull nginx 查看镜像 docker images 启动容器 docker run -d --name nginx01 -p 3344:80 nginx 外部端口需要在服务器安全组中设置&#xff0c;使用docker镜像nginx以后台模式启动一个容器&#xff0c;并将容器…...

C++Qt——自定义信号与槽

自定义信号与槽 自定义信号与槽是实现对象间通信的一种机制&#xff0c;比如按钮和窗口间的通信。 一、定义信号 Signal关键字声明的类成员函数。不需要实现&#xff0c;只需要声明。 signals:void mySignals();//定义信号,不用实现二、定义槽 可以使任何普通成员函数&…...

提高项目的性能和响应速度的方法

目录 引言 一、代码优化 二、数据库优化 三、缓存技术&#xff1a; 四、异步处理 1. 将耗时的操作改为异步处理 1.1 文件上传 1.2 邮件发送 2. 使用消息队列实现异步处理 2.1 配置消息队列 2.2 发送消息 2.3 接收消息并处理 五、负载均衡和集群 1. 负载均衡 1.1 …...

QT学习事件

一、事件处理过程 众所周知 Qt 是一个基于 C 的框架&#xff0c;主要用来开发带窗口的应用程序&#xff08;不带窗口的也行&#xff0c;但不是主流&#xff09;。 我们使用的基于窗口的应用程序都是基于事件&#xff0c;其目的主要是用来实现回调&#xff08;因为只有这样程序…...

第13章 网络 Page818 UDP(和TCP的比较)

TCP核心类 asio::ip::tcp::socket;//网络套接字 asio::ip::tcp::endpoint;//边接端地址 asio::ip::tcp::resolver;//地址解析器 asio::ip::tcp::acceptor;//连接接受器 UPD核心类 asio::ip::udp::socket;//网络套接字 asio::ip::udp::endpoint;//边接端地址 asio::ip::udp::…...

EMQX Enterprise 5.4 发布:OpenTelemetry 分布式追踪、OCPP 网关、Confluent 集成支持

EMQX Enterprise 5.4.0 版本已正式发布&#xff01; 新版本提供 OpenTelemetry 分布式追踪与日志集成功能&#xff0c;新增了开放充电协议 OCPP 协议接入能力&#xff0c;并为数据集成添加了 Confluent 支持。此外&#xff0c;新版本还进行了多项改进以及 BUG 修复&#xff0c…...

记录 | C++ cout.setf(ios::fixed)

cout.setf(ios::fixed); 是在 C 中使用的一个标准库函数&#xff0c;用于将流的输出格式设置为"fixed" "fixed"格式指定输出浮点数时&#xff0c;小数点后的位数是固定的。这意味着&#xff0c;无论输出的数字有多少位小数&#xff0c;小数点后都会保留相…...

Eclipse 创建 Hello World 工程

Eclipse 创建 Hello World 工程 1. Hello WorldReferences Download and install the Eclipse IDE. 1. Hello World Eclipse -> double click -> Launch 单击蓝色方框 (右上角) 最大化 IDE File -> New -> C Project -> Finish Project name&#xff1a;工程名…...

【前端工程化面试题】vite热更新原理

vite 在开发阶段&#xff0c;运行 vite 命令&#xff0c;会启动一个开发服务器&#xff0c;vite 在开发阶段是一个服务器 依赖 esm&#xff1a; vite 在开发阶段使用 esm 作为开发时的模块系统。esm 具有动态导入的能力&#xff0c;这使得在代码中引入模块时可以动态地加载新的…...

【leetcode】判断二叉树是否完全二叉树

递归方式判断二叉树是否完全二叉树 bool TreeComplete(TreeNode* root) {if (root ! NULL) {if (root->left NULL && root->right ! NULL) {return false; // 左子树空}else if (root->left NULL && root->right NULL) {return true; // 左右子…...

Java多线程系列——内存模型JMM

目录 核心思想 关键概念 1. 可见性 2. 原子性 3. 有序性 工作原理 并发工具类 对并发编程的影响 同步策略 JMM的实践意义 结语 Java内存模型&#xff08;Java Memory Model, JMM&#xff09;是Java并发编程中的核心概念&#xff0c;其定义了Java虚拟机&#xff08;JV…...

深入理解 Vue3 中的 setup 函数

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…...

Flutter鸿蒙开发环境:从零到一,手把手解决环境配置与编译难题

1. 环境准备&#xff1a;搭建Flutter鸿蒙开发的基石 第一次接触Flutter鸿蒙开发时&#xff0c;环境配置就像盖房子的地基&#xff0c;看似简单却最容易踩坑。我在Windows系统上反复折腾了三天才搞定所有环境&#xff0c;这里把血泪经验总结成保姆级教程。首先需要明确的是&…...

为什么数据质量成为人工智能领域最重要的问题

简而言之&#xff1a;传统的基于人工编写规则和被动检查的数据质量体系&#xff0c;从未针对智能体人工智能进行设计。到2026年&#xff0c;当自主代理处理错误数据时&#xff0c;没有人会介入以发现问题。那些在人工智能领域取得成功的组织&#xff0c;并非从更好的模型入手&a…...

实战应用:基于快马AI生成的代码,快速构建全功能在线学术期刊平台

实战应用&#xff1a;基于快马AI生成的代码&#xff0c;快速构建全功能在线学术期刊平台 最近在帮学校实验室搭建一个开源学术期刊的在线投稿系统&#xff0c;正好体验了InsCode(快马)平台的AI代码生成功能。整个过程比想象中顺利很多&#xff0c;从需求分析到可运行的原型只用…...

intv_ai_mk11保姆级教程:解决页面打开但生成慢、服务启动失败等6类问题

intv_ai_mk11保姆级教程&#xff1a;解决页面打开但生成慢、服务启动失败等6类问题 1. 快速了解intv_ai_mk11 intv_ai_mk11是一个基于Llama架构的中等规模文本生成模型&#xff0c;特别适合处理通用问答、文本改写、解释说明和简短创作等任务。这个镜像已经完成了本地部署&am…...

AI赋能编辑器:借助快马为Notepad++理念添加智能编程助手

今天想和大家分享一个有趣的实践&#xff1a;如何为传统代码编辑器&#xff08;比如Notepad&#xff09;注入AI能力。虽然Notepad本身轻量高效&#xff0c;但缺乏现代智能辅助功能。通过结合InsCode(快马)平台的AI能力&#xff0c;我们可以轻松实现智能补全、错误检查和代码优化…...

人工智能应用- 人工智能风险与伦理:01.数据安全

图: 人脸识别的滥用可能带来隐私风险&#xff0c;为不法分子提供可乘之机。特别是无处不在的摄像头&#xff0c;使我们的人脸生物信息可能暴露在风险中&#xff0c;被非法采集。人工智能的广泛应用离不开对数据的采集与分析&#xff0c;但也因此带来了数据安全方面的担忧。人工…...

企业级OA系统高可用方案:泛微ecology+Nginx负载均衡最佳实践

企业级OA系统高可用架构设计与实践&#xff1a;泛微ecologyNginxResin全栈解决方案 在数字化转型浪潮中&#xff0c;办公自动化系统(OA)已成为企业核心IT基础设施。作为国内领先的协同管理平台&#xff0c;泛微ecology承载着企业关键业务流程&#xff0c;其稳定性直接影响组织运…...

MiniCPM-o-4.5-nvidia-FlagOS企业案例:HR简历图像扫描+关键信息结构化提取

MiniCPM-o-4.5-nvidia-FlagOS企业案例&#xff1a;HR简历图像扫描关键信息结构化提取 1. 引言&#xff1a;当HR遇上堆积如山的纸质简历 想象一下这个场景&#xff1a;公司招聘季&#xff0c;HR的办公桌上堆满了上百份纸质简历。每一份都需要手动录入系统——姓名、电话、邮箱…...

Phi-4-mini-reasoning真实案例:教育机构自动批题与答案生成应用

Phi-4-mini-reasoning真实案例&#xff1a;教育机构自动批题与答案生成应用 1. 教育场景中的智能批改需求 在教育培训行业&#xff0c;教师每天需要花费大量时间批改作业和试卷。传统的人工批改方式存在几个明显痛点&#xff1a; 时间成本高&#xff1a;一位数学老师批改50份…...

Fish Speech 1.5 Web界面保姆级教程:上传参考音频→文本对齐→语音生成全链路

Fish Speech 1.5 Web界面保姆级教程&#xff1a;上传参考音频→文本对齐→语音生成全链路 你是不是也想用AI生成和自己声音一模一样的语音&#xff1f;Fish Speech 1.5就能帮你实现这个愿望&#xff01;这个强大的语音合成工具不仅能生成自然流畅的语音&#xff0c;还能通过参…...