leetcode hot100 合并区间

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

import copy

class Solution(object):

def merge(self, intervals):

"""

:type intervals: List[List[int]]

:rtype: List[List[int]]

"""

intervals_result = []

intervals.sort(key = lambda x:x[0])

print(intervals)

intervals_iter = copy.deepcopy(intervals)

for i , interval in enumerate(intervals_iter):

if i==0:

intervals_result.append(interval)

待处理0

if interval[0]<=intervals_result[-1][1]:

interval_merge = [intervals_result[-1][0],max(intervals_result[-1][1],intervals[i][1])]

if len(intervals_result)>0:

intervals_result.pop()

intervals_result.append(interval_merge)

else:

intervals_result.append(interval)

return intervals_result

关键在于找到合并的条件是先按照start排序,然后看上一个的end有没有比这一个的start大,如果大的话就合并(包括两种情况,一个是这一个的start和end都比上一个的end小,一个是这一个的start小,end大)

相关推荐
醒过来摸鱼几秒前
合并区间问题
算法
Trouvaille ~2 分钟前
【动态规划篇】专题(二):路径问题——在网格图中的决策艺术
c++·算法·leetcode·青少年编程·动态规划
货拉拉技术28 分钟前
文本大模型评测实践
人工智能·深度学习·算法
CoovallyAIHub1 小时前
模糊、噪声、压缩……让检测器学会主动评估画质
深度学习·算法·计算机视觉
跃龙客1 小时前
atomic笔记
笔记·算法
智驱力人工智能1 小时前
地铁隧道轨道障碍物实时检测方案 守护城市地下动脉的工程实践 轨道障碍物检测 高铁站区轨道障碍物AI预警 铁路轨道异物识别系统价格
人工智能·算法·yolo·目标检测·计算机视觉·边缘计算
陈天伟教授1 小时前
人工智能应用- 预测化学反应:05. AI 预测化学反应类型
人工智能·深度学习·学习·算法·机器学习
LYS_06181 小时前
C++学习(7)(输入输出)
c++·学习·算法
仰泳的熊猫1 小时前
蓝桥杯算法提高VIP-种树
数据结构·c++·算法·蓝桥杯·深度优先·图论
Remember_9931 小时前
SpringCloud:Nacos注册中心
java·开发语言·后端·算法·spring·spring cloud·list