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)

相关推荐
jiang_changsheng18 小时前
环境管理工具全景图与深度对比
java·c语言·开发语言·c++·python·r语言
linjoe9918 小时前
【Medical AI\pathology】WSI 的 JPEG 压缩质量与存储效率权衡分析
python·图像压缩·计算病理学·wsi
yong999018 小时前
MATLAB面波频散曲线反演程序
开发语言·算法·matlab
Fightting8818 小时前
Tkinter Button bind hover message
开发语言·python
JicasdC123asd18 小时前
【工业检测】基于YOLO13-C3k2-EIEM的铸造缺陷检测与分类系统_1
人工智能·算法·分类
玄同76519 小时前
LangChain 1.0 模型接口:多厂商集成与统一调用
开发语言·人工智能·python·langchain·知识图谱·rag·智能体
Not Dr.Wang42219 小时前
自动控制系统稳定性研究及判据分析
算法
VT.馒头19 小时前
【力扣】2722. 根据 ID 合并两个数组
javascript·算法·leetcode·职场和发展·typescript
EnglishJun19 小时前
数据结构的学习(四)---栈和队列
数据结构·学习
喵手19 小时前
Python爬虫实战:构建招聘会数据采集系统 - requests+lxml 实战企业名单爬取与智能分析!
爬虫·python·爬虫实战·requests·lxml·零基础python爬虫教学·招聘会数据采集