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

leetcode_数组 56. 合并区间

56. 合并区间

  • 以数组 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] 可被视为重叠区间。
class Solution(object):
    def merge(self, intervals):
        """
        :type intervals: List[List[int]]
        :rtype: List[List[int]]
        """
        if not intervals:
            return []
        
        intervals.sort(key = lambda x: x[0])  # 排序(默认升序)
        merged = []
        for interval in intervals:  # 遍历intervals中的所有区间
            if not merged or merged[-1][1]<interval[0]:  # merged[-1] 代表当前已合并区间列表中的最后一个区间
                merged.append(interval)  
                # 如果merged为空或者merged中最后一个区间的下界小于interval中的上界, 则无需合并, 直接将interval添加到merged中  
            else:
                merged[-1][1] = max(merged[-1][1],interval[1])
                # 否则将merged中最后一个区间的下界替换为max(merged[-1][1],interval[1])
        return merged
  • 时间复杂度:O(n log n),主要由排序决定。

  • 空间复杂度:O(n),存储合并后的区间。

http://www.dtcms.com/a/114731.html

相关文章:

  • Pod控制器之deployment
  • 2025 ArkTS语言开发入门之前言(二)
  • nginx中地理位置访问控制模块geo
  • 2025年【山东省安全员C证】考试题及山东省安全员C证考试内容
  • 【算法】筛质数
  • FlashDB移植
  • Redis 热key问题怎么解决?
  • 计算机毕业设计指南
  • 开发指南111-关闭所有打开的子窗口
  • Spring 中有哪些设计模式?
  • python入门之从安装python及vscode开始
  • 功耗日志抓取需求
  • (六)安卓开发中的Activity的启动、关闭和生命周期详解
  • 目录遍历(Directory traversal)漏洞总结
  • keepalived高可用介绍
  • VLAN(虚拟局域网)
  • 机器学习之数据预处理(一):缺失值处理和异常值识别的几种常用方法
  • ER-图,详情和画法
  • Windows操作系统安全配置(一)
  • 关于计算机网络的一些疑问
  • 新一代AI架构实践:数字大脑AI+智能调度MCP+领域执行APP的黄金金字塔体系
  • 批量将 Markdown 转换为 Word/PDF 等其它格式
  • react和vue在开发使用的语法上面有什么区别?
  • 自动微分模块
  • SpringSecurity框架入门
  • (自用)WebSocket创建流程
  • oracle批量删除分区
  • 【船舷外机】行业研究
  • 数据结构学习-第一天
  • 【注解简化配置的原理是什么】