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

相关推荐
灵感__idea7 小时前
Hello 算法:“走一步看一步”的智慧
前端·javascript·算法
lwf0061648 小时前
导数学习日记
学习·算法·机器学习
头发够用的程序员9 小时前
从滑动窗口到矩阵运算:img2col算法基本原理
人工智能·算法·yolo·性能优化·矩阵·边缘计算·jetson
武帝为此10 小时前
【数据清洗缺失值处理】
python·算法·数学建模
Halo_tjn10 小时前
Java 基于字符串相关知识点
java·开发语言·算法
念越11 小时前
算法每日一题 Day08|双指针法解决三数之和
算法·力扣
黎阳之光11 小时前
黎阳之光透明管理:视频孪生重构智慧仓储新范式
人工智能·算法·安全·重构·数字孪生
CappuccinoRose12 小时前
回溯法 - 软考备战(四十三)
算法·排列组合·路径·n皇后·子集·解数独·岛屿
AC赳赳老秦12 小时前
OpenClaw进阶技巧:批量修改文件内容、替换关键词,解放双手
java·linux·人工智能·python·算法·测试用例·openclaw
Robot_Nav13 小时前
Shape-Aware MPPI(SA MPPI)算法:基于RC-ESDF的任意形状机器人实时轨迹优化
算法·机器人·sa-mppi