LeetCode-56. 合并区间【数组 排序】

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 <= intervals.length <= 10^4^

intervals[i].length == 2

0 <= starti <= endi <= 10^4^

解题思路一:排序?怎么排?当然是排各个区间的左边界,然后判断下一个边界的左边界与结果数组里面的右边界是否重叠。

python中lambda函数

在python中实现排序的方式如下:

python 复制代码
intervals.sort(key=lambda x: x[0])

实现方式还是有点不同的, 因为在python中的排序函数sort支持直接根据关键字进行排序, 实现起来更加简洁.

python 复制代码
class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        res = []
        intervals.sort(key = lambda x: x[0])
        res.append(intervals[0])
        for i in range(1, len(intervals)):
            if intervals[i][0] <= res[-1][1]:
                right = max(intervals[i][1], res[-1][1])
                res[-1][1] = right
            else:
                res.append(intervals[i])
        return res

时间复杂度:O(nlogn) 快排

空间复杂度:O(logn)快排栈

解题思路二:优化

python 复制代码
class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        res = []
        # 空集合直接返回
        intervals.sort(key = lambda x: x[0])
        res.append(intervals[0])
        for i in range(1, len(intervals)):
            if res[-1][1] >= intervals[i][0]:
                res[-1][1] = max(res[-1][1], intervals[i][1])
            else:
                res.append(intervals[i])
        return res 

时间复杂度:O(nlogn) 快排

空间复杂度:O(logn)快排栈

解题思路三:0

python 复制代码

时间复杂度:O(n)

空间复杂度:O(n)

相关推荐
Dante79828 分钟前
【数据结构】二叉搜索树、平衡搜索树、红黑树
数据结构·c++·算法
HelloGitHub29 分钟前
经过 10 亿级性能验证的隐私计算开源利器
python·开源·github
一号言安41 分钟前
牛客python蓝桥杯11-32(自用)
开发语言·python
shinelord明44 分钟前
【软件设计】23 种设计模式解析与实践指南
数据结构·设计模式·软件工程
梦丶晓羽1 小时前
自然语言处理:主题模型
人工智能·python·自然语言处理·lda·主题模型
驼驼学编程1 小时前
决策树,Laplace 剪枝与感知机
算法·决策树·剪枝
坚强小葵1 小时前
实验8-2-1 找最小的字符串
c语言·算法
weixin_525936331 小时前
Python数据分析之机器学习基础
python·机器学习·数据分析
apcipot_rain1 小时前
【密码学——基础理论与应用】李子臣编著 第三章 分组密码 课后习题
python·算法·密码学