当前位置: 首页 > 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),存储合并后的区间。

相关文章:

  • Pod控制器之deployment
  • 2025 ArkTS语言开发入门之前言(二)
  • nginx中地理位置访问控制模块geo
  • 2025年【山东省安全员C证】考试题及山东省安全员C证考试内容
  • 【算法】筛质数
  • FlashDB移植
  • Redis 热key问题怎么解决?
  • 计算机毕业设计指南
  • 开发指南111-关闭所有打开的子窗口
  • Spring 中有哪些设计模式?
  • python入门之从安装python及vscode开始
  • 功耗日志抓取需求
  • (六)安卓开发中的Activity的启动、关闭和生命周期详解
  • 目录遍历(Directory traversal)漏洞总结
  • keepalived高可用介绍
  • VLAN(虚拟局域网)
  • 机器学习之数据预处理(一):缺失值处理和异常值识别的几种常用方法
  • ER-图,详情和画法
  • Windows操作系统安全配置(一)
  • 关于计算机网络的一些疑问
  • 南阳做网站 汉狮公司/怎么让网站快速收录
  • 受欢迎的免费建站/石家庄关键词优化平台
  • 优化网站推广网站/金城武重庆森林经典台词
  • 武汉网架加工厂/seo公司重庆
  • 杭州做绒毛鉴定网站/今日热点新闻头条
  • 网站推广分析/百度网游排行榜