刷题日记 合并区间

以数组intervals表示若干个区间的集合,其中单个区间为intervals[i] = [starti, endi]。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间

示例 1:

输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].

示例 2:

输入:intervals = [[1,4],[4,5]]输出:[[1,5]]解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。

示例 3:

输入:intervals = [[4,7],[1,4]]输出:[[1,7]]解释:区间 [1,4] 和 [4,7] 可被视为重叠区间。

好,这题本身不难,难在你第一次看代码时不知道每一步在“干嘛”。我按**“人话 + 逐行解释 + 例子”**给你讲一遍,你就能看懂了。


一、题目先用一句话说清楚

给你很多区间,比如:

[1,3] [2,6] [8,10] [15,18]

其中[1,3][2,6]有重叠
要合并成:

[1,6] [8,10] [15,18]

二、整体思路(非常重要)

三步走:

  1. 先排序(按区间起点从小到大)

  2. 从左到右扫描

  3. 用一个新数组merged存合并后的区间


三、代码逐行“翻译成人话”

1️⃣ 函数定义(不用管)

vector<vector<int>> merge(vector<vector<int>>& intervals)

意思:
输入是[[1,3],[2,6],...]
输出也是同样格式


2️⃣ 如果没区间,直接返回空

if (intervals.size() == 0) { return {}; }

防止空数组出错


3️⃣ 排序(这是关键)

sort(intervals.begin(), intervals.end());

vector<int>默认按第一个元素 → 第二个元素排序

例如:

排序前: [ [2,6], [1,3], [8,10] ] 排序后: [ [1,3], [2,6], [8,10] ]

📌为什么要排序?
因为只有排好序,才能从左到右“挨个合并”


4️⃣ 定义结果数组

vector<vector<int>> merged;

👉 用来存已经合并好的区间


5️⃣ 开始遍历每个区间

for (int i = 0; i < intervals.size(); ++i) {

每次拿一个区间


6️⃣ 当前区间的左右端点

int L = intervals[i][0], R = intervals[i][1];

比如当前区间是[2,6]
那么:

L = 2 R = 6

7️⃣ 判断:要不要新开一个区间?

if (!merged.size() || merged.back()[1] < L) {

这句话很关键,拆开看👇

情况 1:merged还是空的
!merged.size()

说明这是第一个区间

👉 直接放进去


情况 2:和上一个区间不重叠
merged.back()[1] < L

意思是:

上一个区间的右端点 < 当前区间的左端点

例如:

上一个: [1,3] 当前: [5,7]

没有交集


8️⃣ 不重叠 → 直接放进去

merged.push_back({L, R});

9️⃣ 否则:有重叠 → 合并

else { merged.back()[1] = max(merged.back()[1], R); }

📌 意思是:

把上一个区间的“右端点”拉长

例如:

上一个: [1,3] 当前: [2,6]

合并后:

[1,6]

所以用max(...)


🔟 循环结束,返回结果

return merged;

四、完整走一遍例子(最重要)

输入:

intervals = [[1,3],[2,6],[8,10],[15,18]]

排序后(本来就有序):

[1,3] [2,6] [8,10] [15,18]

过程:

当前区间merged 之前操作merged 之后
[1,3]放入[[1,3]]
[2,6][[1,3]]重叠 → 合并[[1,6]]
[8,10][[1,6]]不重叠[[1,6],[8,10]]
[15,18][[1,6],[8,10]]不重叠[[1,6],[8,10],[15,18]]

五、一句话总结(考试 / 面试版)

先按起点排序,然后遍历区间:
若当前区间与结果数组最后一个区间不重叠,则直接加入;
否则合并并更新右端点。


class Solution {

public:

vector<vector<int>> merge(vector<vector<int>>& intervals) {

if (intervals.size()==0){

return{};

}

sort(intervals.begin(),intervals.end());

vector<vector<int>> merge;

for(int i=0;i<intervals.size();++i){

int L=intervals[i][0];

int R=intervals[i][1];

if(!merge.size()||merge.back()[1]<L){

merge.push_back({L,R});

}

else{

merge.back()[1]=max(merge.back()[1],R);

}

}

return merge;

}

};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1125003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2007-2024年健康城市试点政策DID数据

政策背景 健康城市试点政策源于世界卫生组织&#xff08;WHO&#xff09;倡导的全球战略行动&#xff0c;旨在通过综合措施解决城市化带来的健康挑战。2016年&#xff0c;中国全国爱国卫生运动委员会发布《关于开展健康城市试点工作的通知》&#xff0c;正式启动健康城市试点工…

使用Python打造Markdown转EPUB电子书生成工具

前言 在数字阅读时代&#xff0c;EPUB格式已成为电子书的主流标准。作为一名内容创作者或开发者&#xff0c;你是否想过将自己的Markdown笔记、文章快速转换成精美的电子书&#xff1f;今天&#xff0c;我将带你使用Python和wxPython构建一个简洁实用的Markdown转EPUB转换工具。…

2005-2025年各省、地级市、上市公司人工智能创新发展试验区DID数据

在数字经济与人工智能深度融合的背景下&#xff0c;人工智能创新发展试验区作为国家推动 AI 技术落地、产业升级的核心载体&#xff0c;其政策实施效果的精准评估对优化创新治理体系具有关键意义。本数据基于双重差分&#xff08;DID&#xff09;方法构建&#xff0c;可有效剥离…

c++qt开发第三天 摄像头采集视频

capture_thread.h 一、这个文件是干嘛的&#xff1f;&#xff08;一句话先懂&#xff09;&#x1f449; 这是一个用 Qt 的 QThread 写的“视频采集线程类”作用大致是&#xff1a;从 Linux 摄像头设备 /dev/video1 采集视频把采集到的图像转换成 QImage通过 Qt 信号 发给界面显…

从零构建:手写一个支持“高度定制化排版”的 Chrome 网页摘录插件

在碎片化阅读时代&#xff0c;我们经常需要将网页上的精彩段落保存下来&#xff0c;整理成 PDF 或 EPUB 放入电子书阅读器中。现有的插件&#xff08;如 Evernote、Pocket&#xff09;虽然强大&#xff0c;但往往存在两个痛点&#xff1a; 格式混乱&#xff1a;直接抓取网页 H…

晶台光耦在储能系统中的作用

光耦在储能系统中通过电气隔离实现高压与低压电路的安全隔离&#xff0c;是保障系统稳定运行的关键器件。晶台光耦KL1018/KL1019系列采用LSOP4封装&#xff0c;具备5KV隔离电压及-55~110℃宽温特性&#xff0c;广泛应用于太阳能储能逆变器。其红外发射二极管与光电晶体管耦合结…

基于时间和空间的大规模电动汽车入网网损调度 建立MISOCP模型,分时段优化,并行计算(实时优化)

基于时间和空间的大规模电动汽车入网网损调度 建立MISOCP模型&#xff0c;分时段优化&#xff0c;并行计算&#xff08;实时优化&#xff09;。 并对比了优化和未优化结果&#xff0c;验证了调度的有效性。 考虑到电动汽车的机动性&#xff0c;市区可分为三类功能区&#xff1a…

软考高项—信息系统项目管理师,2026全新汇总!

软考高项—信息系统项目管理师&#xff0c;2026全新汇总&#xff01; 链接&#xff1a;https://pan.quark.cn/s/30a4d39e1726

远程代打卡难根治?深度解析盖雅蓝牙打卡如何从底层杜绝考勤舞弊

在数字化办公日益普及的今天&#xff0c;考勤打卡作为企业管理的基础环节&#xff0c;正面临前所未有的信任挑战。市场上层出不穷的代打卡服务和各种模拟定位软件&#xff0c;让本应严肃的职场规则变成了一场技术博弈。这种被称为灰色产业链的现象&#xff0c;不仅让企业承担了…

20亿并购背后的AI Agent核心密码:LangChain与Manus联合揭秘上下文工程三大策略

2025年AI行业最重磅的新闻之一&#xff0c;莫过于Meta以20亿美金并购AI Agent领域的明星企业Manus。这笔天价交易让整个行业为之震动&#xff0c;也让Manus打造的颠覆性Agent成为焦点。为什么Manus的Agent能获得巨头如此青睐&#xff1f;它背后究竟隐藏着怎样的技术逻辑&#x…

网站meta标签添加Meta property=og协议的OG标签优化详解教程

1、网站meta标签添加Meta propertyog协议的OG标签优化详解教程<meta property"og:title" content"论文查重" />肯定有人见过这种的meta标签&#xff0c;那就会有人问这种是什么标签&#xff0c;干什么用的呢&#xff1f;2、Meta Propertyog是什么协议…

2026年最新爆火AI论文工具盘点:7款神器实测,知网维普查重一把过不留痕!

凌晨三点&#xff0c;论文查重率还在50%徘徊&#xff1f;导师的修改意见看得你头皮发麻&#xff0c;deadline只剩最后48小时&#xff1f; 别慌&#xff01;2026年最新爆火的AI论文工具已经帮你把“不可能”变成了“30分钟交稿”。这不再是科幻&#xff0c;而是无数研究生、本科…

当Ada记录类型含有可变长数组分量时的逆向分析

请看IDA生成的以下伪代码&#xff1a;char *a7;//函数的输入参数int v31; // ecxint v32; // ecxint v33; // edxint v34; // ebxint v35; // ecxint v36; // ecxint v37; // edxint v38; // eaxint v39; // edxv31 *a7;if ( v31 > 99 )v31 99;v32 (~(532 * v31 532) &g…

刀客doc:小米是时候切断和粉丝的脐带了

文/刀客doc(头条精选作者)刚刚&#xff0c;小米就“大熊事件”给出了一份相对完整的处理结果。公司发言人通过官微回应&#xff0c;公布了内部调查结论&#xff0c;文中称&#xff1a;“因为米粉&#xff0c;所以小米。米粉的信任和支持&#xff0c;是小米不断前行的基石。我们…

全网最全8个AI论文软件,专科生搞定毕业论文+格式规范!

全网最全8个AI论文软件&#xff0c;专科生搞定毕业论文格式规范&#xff01; AI 工具助力论文写作&#xff0c;专科生也能轻松应对 随着人工智能技术的不断发展&#xff0c;AI 工具在学术领域的应用越来越广泛。对于许多专科生来说&#xff0c;撰写毕业论文是一项既紧张又复杂的…

使用FOFA挖掘Grafana CVE-2025-4123漏洞与赏金获取全记录

我是如何通过FOFA发现Grafana中的“CVE-2025-4123”并获得赏金的 Hello Hunters&#xff01;我是Abdelrahman (A0xtrojan)&#xff0c;很高兴与大家分享我的技术文章&#xff0c;这篇文章记录了我在一个私人项目中的发现。话不多说&#xff0c;让我们直接进入正题。 发现漏洞 有…

USB TYPE-C 公头连接器设计规范总结:提升可靠性、降本增效的关键指南

在智能设备高速发展的时代&#xff0c;USB TYPE-C接口已成为行业标准连接方案&#xff0c;其公头连接器的设计质量直接影响产品性能、可靠性和成本效益。本规范文档&#xff08;基于VIVO等领先企业经验&#xff09;旨在为新产品开发及旧产品改善提供系统指导&#xff0c;避免常…

LSB与MSB:嵌入式开发中的核心概念详解

LSB与MSB&#xff1a;嵌入式开发中的核心概念详解 引言&#xff1a;二进制世界的方向标 在数字系统和嵌入式开发中&#xff0c;LSB&#xff08;Least Significant Bit&#xff09; 和 MSB&#xff08;Most Significant Bit&#xff09; 是理解数据表示和处理的基石概念。它们定…

手机电池连接器:现代电子设备的关键组件介绍

时&#xff0c;弹簧触点与电池端子接触&#xff0c;Housing引导对位&#xff0c;Solder Tab确保PCB端牢固。设计规范强调&#xff0c;这种模块化结构能缩短开发周期&#xff08;如通过预压T bar结构优化弹力&#xff09;&#xff0c;并避免常见失效&#xff0c;如接触不良或偏摆…

救命神器!10款AI论文写作软件测评:本科生毕业论文必备

救命神器&#xff01;10款AI论文写作软件测评&#xff1a;本科生毕业论文必备 2026年AI论文写作工具测评&#xff1a;为什么需要这份榜单&#xff1f; 随着人工智能技术的不断进步&#xff0c;越来越多的本科生开始借助AI工具提升论文写作效率。然而&#xff0c;面对市场上琳琅…