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

思路

1)数组先按元素的左端点进行排序

2)创建一个空list

3)  如果list还没有值或者下一个元素的左端点大于list最外面元素的右端点,则说明不能合并

4)否则,可以合并,修改list最外面右端点的值;取max(merge[-1][1], i[1])

class Solution(object):
    def merge(self, intervals):
        """
        :type intervals: List[List[int]]
        :rtype: List[List[int]]
        """
        intervals.sort(key=lambda x: x[0])
        merge = []
        for i in intervals:
            if not merge or i[0]>merge[-1][1]:
                merge.append(i)
            else:
                merge[-1][1] = max(merge[-1][1], i[1])
        return merge

if __name__ == '__main__':
    s=Solution()
    intervals = [[1, 3], [2, 6], [8, 10], [15, 18]]
    print(s.merge(intervals))

相关推荐

  1. LeetCode 56 合并区间

    2024-07-22 02:22:02       52 阅读
  2. LeetCode56.合并区间

    2024-07-22 02:22:02       39 阅读
  3. Leetcode56_合并区间

    2024-07-22 02:22:02       33 阅读
  4. leetcode56--合并区间

    2024-07-22 02:22:02       17 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 02:22:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 02:22:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 02:22:02       45 阅读
  4. Python语言-面向对象

    2024-07-22 02:22:02       55 阅读

热门阅读

  1. 后端开发: 如何去使用公共组件

    2024-07-22 02:22:02       14 阅读
  2. 初步认识css(1)

    2024-07-22 02:22:02       17 阅读
  3. C++ Primer:4.4 赋值运算符

    2024-07-22 02:22:02       19 阅读
  4. ubuntu 上安装软件

    2024-07-22 02:22:02       18 阅读
  5. ubuntu系统下安装配置 8.0.37的MySQL

    2024-07-22 02:22:02       15 阅读
  6. Keras和Pytorch输入图像的张量维度

    2024-07-22 02:22:02       16 阅读
  7. 中介子方程六十五

    2024-07-22 02:22:02       20 阅读
  8. linux命令

    2024-07-22 02:22:02       17 阅读