普通数组---合并区间
个人主页Milestone-里程碑❄️个人专栏: 力扣hot100 CLinuxGitMySQL心向往之行必能至一、题目解读题目描述以数组intervals表示若干个区间的集合其中单个区间为intervals[i] [starti, endi]。请合并所有重叠的区间并返回一个不重叠的区间数组该数组需恰好覆盖输入中的所有区间。示例分析示例 1输入[[1,3],[2,6],[8,10],[15,18]]输出[[1,6],[8,10],[15,18]]。解释区间[1,3]和[2,6]存在重叠合并为[1,6]其余区间无重叠直接保留。示例 2输入[[1,4],[4,5]]输出[[1,5]]。解释相邻区间也被视为重叠区间需要合并。示例 3输入[[4,7],[1,4]]输出[[1,7]]。解释输入区间无序需先排序再判断重叠。从示例中我们可以提炼出两个核心关键点输入区间可能无序、重叠 / 相邻区间都需要合并。二、解题思路贪心算法解决区间合并问题的核心逻辑是贪心策略核心思想是优先合并左端点小的区间通过维护当前合并区间的右端点逐步吸收后续重叠区间。具体步骤如下排序将所有区间按照左端点从小到大排序。排序后我们只需依次比较当前区间与已合并区间的重叠情况无需考虑乱序问题。遍历合并初始化一个结果数组用于存储最终的合并区间。遍历排序后的区间若结果数组为空直接将当前区间加入结果数组。若当前区间的左端点≤结果数组最后一个区间的右端点说明两个区间重叠 / 相邻需要合并 —— 更新结果数组最后一个区间的右端点为「两者右端点的最大值」。若当前区间的左端点结果数组最后一个区间的右端点说明无重叠直接将当前区间加入结果数组。三、代码实现C结合上述思路我们可以写出简洁高效的 C 代码代码中添加了详细注释便于理解cppclass Solution { public: vectorvectorint merge(vectorvectorint intervals) { // 第一步按区间左端点从小到大排序 sort(intervals.begin(), intervals.end()); vectorvectorint res; // 结果数组存储合并后的区间 for (auto interval : intervals) { // 情况1结果数组为空直接加入第一个区间 // 情况2当前区间左端点 结果数组最后一个区间的右端点无重叠直接加入 if (res.empty() || interval[0] res.back()[1]) { res.emplace_back(interval); } else { // 情况3有重叠合并区间更新右端点为最大值 res.back()[1] max(res.back()[1], interval[1]); } } return res; } };四、关键细节解析1. 为什么要按左端点排序排序是贪心算法的前提。排序后区间的左端点呈递增趋势我们只需关注当前区间与结果数组最后一个区间的右端点的关系就能线性遍历完成合并无需回溯将时间复杂度从暴力解法的 \(O(n^2)\) 降低到 \(O(n \log n)\)排序的时间复杂度。2. 为什么要用max更新右端点这是很多初学者容易忽略的点例如输入[[1,5],[2,3]]排序后第一个区间是[1,5]第二个区间是[2,3]。此时第二个区间完全被第一个区间包含若直接覆盖右端点会得到错误结果[1,3]而用max就能保留正确的右端点5。3. 关于emplace_back的使用代码中使用res.emplace_back(interval)而非res.push_back(interval)两者功能相同但emplace_back是直接在容器尾部构造对象避免了拷贝操作效率更高是 C11 及以上版本的推荐写法。五、复杂度分析时间复杂度\(O(n \log n)\)。其中 n 是区间的数量排序操作的时间复杂度为 \(O(n \log n)\)遍历操作的时间复杂度为 \(O(n)\)整体由排序主导。空间复杂度\(O(\log n)\)排序的系统栈空间或 \(O(n)\)存储结果的数组最坏情况无重叠需存储所有区间。六、总结合并区间问题是贪心算法在区间类问题中的典型应用其核心套路可以总结为排序定顺序遍历判重叠贪心合并区间。

相关新闻

2026昔年解析第一使用Flask快速搭建轻量级Web应用

2026昔年解析第一使用Flask快速搭建轻量级Web应用

SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式。本文将介绍如何使用SQLAlchemy ORM进行数据库操作。目录安装SQLAlchemy核心概念连接数据库定义数据模型创建数据库表基本CRUD操作查询数据关系操…

2026/7/4 7:55:00 阅读更多 →
[CISCN 2019 初赛]Love Math

[CISCN 2019 初赛]Love Math

打开题目便是一段代码 <?php error_reporting(0); //听说你很喜欢数学&#xff0c;不知道你是否爱它胜过爱flag if(!isset($_GET[c])){show_source(__FILE__); }else{$content $_GET[c];//如果没有在url中通过GET传参数c就显示当前PHP文件源代码&#xff0c;否则&#xf…

2026/7/5 20:05:48 阅读更多 →
[Godot] 通过AABB包围盒和射线法检测碰撞

[Godot] 通过AABB包围盒和射线法检测碰撞

前言 最近需要做鼠标选择单位的功能&#xff0c;所以给大家分享一下我是如何实现的&#xff0c;简单来说&#xff0c;是在鼠标点击后&#xff0c;通过我写的获取单位点集的方法&#xff0c;先通过AABB包围盒进行粗筛&#xff0c;然后再通过射线法进行精确判定&#xff0c;最后根…

2026/7/5 18:16:49 阅读更多 →

最新新闻

RAG 检索优化实战:基于 Recall@5、Precision@3、NDCG@10 的 3 步调优法

RAG 检索优化实战:基于 Recall@5、Precision@3、NDCG@10 的 3 步调优法

RAG 检索优化实战&#xff1a;基于 Recall5、Precision3、NDCG10 的 3 步调优法在构建检索增强生成&#xff08;RAG&#xff09;系统时&#xff0c;检索模块的性能直接影响最终生成内容的质量。本文将介绍一套基于 Recall5、Precision3 和 NDCG10 指标的实用调优方法&#xff0…

2026/7/6 8:43:54 阅读更多 →
终极指南:如何使用Scarab模组管理器快速安装空洞骑士游戏模组

终极指南:如何使用Scarab模组管理器快速安装空洞骑士游戏模组

终极指南&#xff1a;如何使用Scarab模组管理器快速安装空洞骑士游戏模组 【免费下载链接】Scarab An installer for Hollow Knight mods written with Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 你是否曾经为了在《空洞骑士》中安装一个心仪的模组…

2026/7/6 8:43:54 阅读更多 →
终极智能BP助手:如何用Seraphine轻松实现英雄联盟自动BP与战绩分析

终极智能BP助手:如何用Seraphine轻松实现英雄联盟自动BP与战绩分析

终极智能BP助手&#xff1a;如何用Seraphine轻松实现英雄联盟自动BP与战绩分析 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否在英雄联盟排位赛中经常因为错过接受对局而懊恼&#xff1f;是否在BP阶段…

2026/7/6 8:41:53 阅读更多 →
专业显卡优化工具NVIDIA Profile Inspector:解锁游戏性能的6个关键步骤

专业显卡优化工具NVIDIA Profile Inspector:解锁游戏性能的6个关键步骤

专业显卡优化工具NVIDIA Profile Inspector&#xff1a;解锁游戏性能的6个关键步骤 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector是一款专业的开源显卡驱动配置工具&#xf…

2026/7/6 8:39:52 阅读更多 →
新手入门:5分钟学会使用openEuler迁移助手

新手入门:5分钟学会使用openEuler迁移助手

新手入门&#xff1a;5分钟学会使用openEuler迁移助手 【免费下载链接】migration-assistant Migration assistant helps users migrate business applications from other Linux hairstyles to openEuler OS. 项目地址: https://gitcode.com/openeuler/migration-assistant …

2026/7/6 8:33:50 阅读更多 →
MIL 增量学习实战:基于注意力与原型映射,3数据集F1分数提升2-4%

MIL 增量学习实战:基于注意力与原型映射,3数据集F1分数提升2-4%

MIL增量学习实战&#xff1a;基于注意力与原型映射的性能突破1. 前沿交叉领域的创新实践在动态数据环境下&#xff0c;多示例学习&#xff08;MIL&#xff09;与增量学习的结合正成为解决现实问题的关键技术。传统MIL方法在静态封闭环境中表现优异&#xff0c;但当面对持续新增…

2026/7/6 8:33:50 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性&#xff1a;5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域&#xff0c;单元测试是保证代码质量的重要环节。当应用涉及数据库操作时&#xff0c;测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南&#xff1a;用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南&#xff1a;告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况&#xff1a;下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools&#xff1a;5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里&#xff0c;参与了关于混合后量子密码学的讨论&#xff0c;应付端点攻击找茬的人&#xff0c;还参与留言板讨论后&#xff0c;发现“威胁模型”对多数人仍是陌生概念&#xff0c;且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”&#xff1a;我理解的渗透测试到底是什么&#xff1f;每次看到新闻里说某个大公司的数据被“黑”了&#xff0c;或者某个网站被攻击导致服务瘫痪&#xff0c;你是不是和我一样&#xff0c;心里会冒出两个念头&#xff1a;一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻