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

数组题解——​合并区间【LeetCode】

56. 合并区间

  1. 排序
    • 将所有区间按起始位置 start 从小到大排序。
    • 这样,重叠的区间会相邻排列,方便后续合并。
  2. 合并
    • 初始化一个空列表 merged,用于存储合并后的区间。
    • 遍历排序后的区间列表:
      • 如果 merged 为空,或者当前区间与 merged 中最后一个区间不重叠,则将当前区间直接添加到 merged 中。
      • 否则,合并当前区间与 merged 中最后一个区间,更新 merged[-1][1] 为两者结束位置的最大值。
class Solution:def merge(self, intervals: List[List[int]]) -> List[List[int]]:# 1. 按照区间的起始位置进行排序intervals.sort(key=lambda x: x[0])# 2. 初始化一个空列表用于存储合并后的区间merged = []# 3. 遍历排序后的区间列表for interval in intervals:# 如果 merged 为空,或者当前区间与 merged 中最后一个区间不重叠if not merged or merged[-1][1] < interval[0]:# 将当前区间直接添加到 merged 中merged.append(interval)else:# 否则,合并当前区间与 merged 中最后一个区间merged[-1][1] = max(merged[-1][1], interval[1])# 4. 返回合并后的区间列表return merged

时间复杂度分析

  1. 排序:时间复杂度为 O(n log n),其中 n 是区间的数量。
  2. 遍历合并:时间复杂度为 O(n)
  • 总时间复杂度为 O(n log n)

 空间复杂度分析

  • 使用了额外的列表 merged 存储结果,空间复杂度为 O(n)
http://www.lryc.cn/news/574490.html

相关文章:

  • 使用 PyAEDT 设计参数化对数周期偶极子天线 LPDA
  • 如何解决TCP传输的“粘包“问题
  • HTTP面试题——缓存技术
  • Qt面试题汇总
  • 记录一下小程序城市索引栏开发经历
  • ✨从零搭建 Ubuntu22.04 + Python3.11 + PyTorch2.5.1 GPU Docker 镜像并上传 Docker Hub
  • Rocky8使用gvm配置Go多版本管理的微服务开发环境
  • uni-app项目实战笔记24--uniapp实现图片保存到手机相册
  • spring01-简介
  • 618风控战升级,瑞数信息“动态安全+AI”利剑出鞘
  • window显示驱动开发—DirectX 图形基础结构 DDI
  • 【CS创世SD NAND征文】基于全志V3S与CS创世SD NAND的物联网智能路灯网关数据存储方案
  • taro小程序,tailwindcss的bg-x-x,背景颜色不生效,只有自定义的写法颜色才生效
  • C++修炼:异常
  • 解码成都芯谷金融中心文化科技产业园:文化+科技双轮驱动
  • Qt 中使用 gtest 做单元测试
  • 一文读懂微观测量:光学3D轮廓仪与共聚焦显微成像的结合应用
  • cherry-pick除了使用命令,有没有什么工具可以使用,或者更高效的方法
  • Linux 文件 I/O 与标准 I/O 缓冲机制详解
  • Java面试中被深挖过的线程问题
  • 对手机屏中断路和短路的单元进行切割或熔接,实现液晶线路激光修复原理
  • Luckysheet Excel xlsx 导入导出互相转换
  • 02-Linux内核源码编译
  • CentOS 7 编译安装Nginx 1.27.5完整指南及负载均衡配置
  • MinIO中视频转换为HLS协议并进行AES加密
  • Python Polars库详解:高性能数据处理的新标杆
  • pyqt多界面
  • LangChain网页自动化PlayWrightBrowserToolkit
  • gRPC 静态库链接到 DLL 的风险与潜在问题
  • 鸿蒙开发深入解析:Service Ability(后台任务)全面指南