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

LeetCode 56 - 合并区间

思路
  1. 排序:将所有区间按起始点从小到大排序。
  2. 贪心合并:初始化一个结果列表,放入第一个区间。然后遍历剩余区间,将当前区间与结果列表中的最后一个区间比较:
    • 重叠(当前区间起点 ≤ 结果区间终点),则更新结果区间的终点为两者终点的最大值。
    • 不重叠,则将当前区间直接加入结果列表。
C++ 代码实现
class Solution {
public:vector<vector<int>> merge(vector<vector<int>>& intervals) {if (intervals.size() <= 1) return intervals;sort(intervals.begin(), intervals.end());vector<vector<int>> merged;merged.push_back(intervals[0]);for (int i = 1; i < intervals.size(); ++i) {if (intervals[i][0] <= merged.back()[1]) {merged.back()[1] = max(merged.back()[1], intervals[i][1]);} else {merged.push_back(intervals[i]);}}return merged;}
};

注:sort 对于 vector<vector<int>> 默认按第一个元素排序,可省略 lambda。

复杂度
  • 时间复杂度: O(n log n),瓶颈在于排序。
  • 空间复杂度: O(n),用于存储返回结果。
http://www.dtcms.com/a/306585.html

相关文章:

  • SpringBoot收尾+myBatis plus
  • 算法精讲:二分查找(二)—— 变形技巧
  • JavaScript中的数据类型以及存储上的差别
  • Keil STM32工程各文件作用
  • ArcGIS以及ArcGIS Pro如何去除在线地图制作者名单
  • 黑马点评-超卖问题
  • 实现了加载 正向 碰撞 雅可比 仿真
  • 4.Origin2021如何绘制多组误差棒图?
  • Vulnhub靶场:thales
  • c++之基础B(第一课)
  • 力扣面试150(44/150)
  • Linux 系统进程管理与计划任务详解
  • Kafka 单机多 Broker 实例集群搭建 | 详情
  • 育儿补贴之外,父母更需要的 “认知补贴”|创客匠人
  • 测试用例颗粒度全解析
  • 领域驱动设计(DDD)在分布式系统中的架构实践
  • Linux:haproxy
  • ORACLE的表维护
  • Ubuntu LNMP
  • 容器化与Docker核心原理
  • 流程制造的数字孪生:从黑箱生产到全息掌控
  • 滚珠导轨在电子制造中的流畅性优势
  • 虚实共生的智能革命:元宇宙、物联网与 AI 融合生态全景图谱
  • 高可靠液晶屏系统解决方案深度解析
  • 基于 Python 开发的信阳市天气数据可视化系统源代码+数据库+课程报告
  • 老旧泵房物联网改造方案与成本效益深度解析
  • C++线程详解
  • 关于“LoggerFactory is not a Logback LoggerContext but Logback is on ......“的解决方案
  • [源力觉醒 创作者计划]_巅峰对话:文心 vs. DeepSeek/Qwen 3.0 深度解析
  • Wan2.2 - 阿里最新开源视频生成模型 支持文生视频/图生视频 支持50系显卡 一键整合包