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 <= 104

intervals[i].length == 2

0 <= starti <= endi <= 104

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

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)

相关推荐
r0ysue_18 分钟前
03.利用显卡内核模块等特性为算法提速百倍
人工智能·python·机器学习
西猫雷婶22 分钟前
pytorch基本运算-梯度运算:requires_grad_(True)和backward()
人工智能·pytorch·python·深度学习·机器学习
一条叫做nemo的鱼32 分钟前
从汇编的角度揭开C++ this指针的神秘面纱(上)
汇编·c++·算法·函数调用·this指针·参数传递
java龙王*36 分钟前
python爬虫简便框架,附带百度操作完整案例
开发语言·爬虫·python
安全系统学习1 小时前
网络安全之内核初级对抗技术分析
开发语言·python·算法·安全·web安全
晴空闲雲2 小时前
数据结构与算法-线性表-线性表的应用
数据结构
仙人掌_lz2 小时前
AI与机器学习ML:利用Python 从零实现神经网络
人工智能·python·机器学习
逸雪飞扬2 小时前
Gradio 非侵入式修改的离线使用方案
python·html
来自外太空的鱼-张小张3 小时前
java将pdf文件转换为图片工具类
java·python·pdf
endNone3 小时前
【机器学习】SAE(Sparse Autoencoders)稀疏自编码器
人工智能·python·深度学习·sae·autoencoder·稀疏自编码器