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: ListList\[int]

:rtype: ListList\[int]

"""

intervals_result = \[\]

intervals.sort(key = lambda x:x0)

print(intervals)

intervals_iter = copy.deepcopy(intervals)

for i , interval in enumerate(intervals_iter):

if i==0:

intervals_result.append(interval)

待处理0

if interval0<=intervals_result-11:

interval_merge = intervals_result\[-10,max(intervals_result-11,intervalsi1)]

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大)

相关推荐
疯狂打码的少年2 小时前
【数据结构】图的遍历:深度优先搜索(DFS)
数据结构·笔记·算法·深度优先
-凌凌漆-3 小时前
【freertos】Task创建(v2)
java·开发语言·算法
Nil2083 小时前
leetcode 24两两交换链表中的节点
算法·leetcode·链表
.格子衫.3 小时前
033动态规划之状态压缩DP——算法备赛
算法·动态规划
ysa0510303 小时前
c++常用自带函数用法与注意
c++·笔记·算法
带多刺的玫瑰5 小时前
Leecode#4刷题之寻找两个正序数组的中位数
java·前端·算法
土司大王5 小时前
LeetCode hot100——除了自身以外数组的乘积
数据结构·算法·leetcode
IvanCodes5 小时前
RAG 实战教程(三):向量数据库检索算法,KNN、IVF、HNSW 与 Faiss 实战
人工智能·算法·agent
阿无,5 小时前
布隆过滤器
java·算法·哈希算法