leetcode0056. 合并区间 - medium

ops/2025/3/14 16:22:50/

1 题目:合并区间

官方难度 - 中等

以数组 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] 可被视为重叠区间。

提示:

1 < = i n t e r v a l s . l e n g t h < = 1 0 4 1 <= intervals.length <= 10^4 1<=intervals.length<=104
i n t e r v a l s [ i ] . l e n g t h = = 2 intervals[i].length == 2 intervals[i].length==2
0 < = s t a r t i < = e n d i < = 1 0 4 0 <= start_i <= end_i <= 10^4 0<=starti<=endi<=104

2 solution

最直接的做法,先按照 start 排序,然后进行合并,步骤如下:

1 先按照 start 递增排序
2 初始化 s = start[0], e = end[0]
3 对于之后的每一个intervals[i],如果 start[i] 在区间[s, e] 内,则说明可以合并,否则是一个新的区间。

代码

class Solution {
public:vector<vector<int>> merge(vector<vector<int>> &intervals) {vector<vector<int>> result;sort(intervals.begin(), intervals.end());int start = intervals[0][0], end = intervals[0][1];int i = 1;while (i < intervals.size()) {if (intervals[i][0] > end) {result.push_back({start, end});start = intervals[i][0];}end = max(end, intervals[i][1]);i++;}result.push_back({start, end});return result;
}
};

结果

在这里插入图片描述


http://www.ppmy.cn/ops/165706.html

相关文章

idea超级AI插件,让 AI 为 Java 工程师

引言​ 用户可在界面中直接通过输入自然语言的形式描述接口的需求&#xff0c;系统通过输入的需求自动分析关键的功能点有哪些&#xff0c;并对不确定方案的需求提供多种选择&#xff0c;以及对需求上下文进行补充&#xff0c;用户修改确定需求后&#xff0c;系统会根据需求设…

PyTorch 和 Python关系

1 PyTorch 和 Python关系 PyTorch 和 Python 是两个不同但相互关联的工具&#xff0c;主要用于机器学习和深度学习领域。以下是它们之间的关系和各自的作用&#xff1a; Python 编程语言: Python 是一种高级编程语言&#xff0c;以其简洁易读的语法而闻名。广泛使用: Python…

Ubuntu 24.04.2 允许 root 登录桌面、 ssh 远程、允许 Ubuntu 客户机与主机拖拽传递文件

允许 root 登录桌面 修改 /etc/pam.d/gdm-autologin , /etc/pam.d/gdm-password 加 # 以注释掉 auth required pam_succeed_if.so user ! root quiet_success 允许 root 通过 ssh 登录 修改 /etc/ssh/sshd_config ... #PermitRootLogin prohibit-password PermitRootLogin …

详细介绍ListView_DeleteItem

书籍&#xff1a;《Visual C 2017从入门到精通》的2.3.8 Win32控件编程 环境&#xff1a;visual studio 2022 内容&#xff1a;【例2.27】支持按Delete键删除某行的列表视图控件 说明&#xff1a;以下内容大部分来自腾讯元宝。 以下是关于**ListView_DeleteItem**函数的详细…

新能源汽车电控系统的大尺寸PCB需求:猎板PCB的技术突围

从特斯拉Model 3到中国智造&#xff0c;大尺寸PCB如何支撑电动化浪潮 #### 引言&#xff1a;新能源汽车电控系统的“心脏”革命 在新能源汽车的“三电”系统&#xff08;电池、电机、电控&#xff09;中&#xff0c;电控系统承担着动力分配、能量管理与行驶控制的核心功能&a…

Git 的基本概念和使用方式。

Git 是一种分布式版本控制系统&#xff0c;用于跟踪文件和目录的变化。Git 的基本概念和使用方式如下&#xff1a; 仓库&#xff08;Repository&#xff09;&#xff1a;Git 仓库是用来存储项目文件和历史记录的地方。一个 Git 仓库包含项目的文件、版本记录和配置信息。 提交…

Vue中有什么组件可以实现轮播效果,每次出现四个元素?

在 Vue 中实现「每次显示四个元素」的轮播效果&#xff0c;可以通过以下组件实现&#xff08;推荐按优先级排序&#xff09;&#xff1a; 1. Swiper Vue-Awesome-Swiper&#xff08;推荐&#xff09; 特点&#xff1a; 最成熟的轮播库&#xff0c;支持复杂交互&#xff08;触…

docker指令整理

以下是 Docker 常用指令的归纳整理&#xff0c;涵盖镜像管理、容器操作、网络配置、数据卷等核心场景&#xff0c;方便快速查阅&#xff1a; 一、镜像管理 命令说明示例docker pull拉取镜像docker pull nginx:latestdocker push推送镜像到仓库docker push my-registry.com/my-…