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

相关推荐
滴滴答滴答答17 分钟前
LeetCode Hot100 之 17 合并区间
算法·leetcode·职场和发展
你怎么知道我是队长19 分钟前
C语言---排序算法8---递归快速排序法
c语言·算法·排序算法
007张三丰43 分钟前
软件测试专栏(5/20):自动化测试入门指南:从零开始构建你的第一个测试框架
自动化测试·python·算法·压力测试·测试框架
Zachery Pole1 小时前
根据高等代数与数分三计算线性回归中的w
算法·回归·线性回归
得一录1 小时前
星图·全参数调试qwen3.1-B
深度学习·算法·aigc
yyjtx1 小时前
DHU上机打卡D22
算法
plus4s1 小时前
2月14日(76-78题)
c++·算法·图论
pzx_0011 小时前
【论文阅读】Attention Is All You Need
论文阅读·算法
-To be number.wan1 小时前
算法学习日记 |贪心算法
c++·学习·算法·贪心算法
清钟沁桐2 小时前
算法实现
算法