python输⼊两个数值区间若能合并区间_【python-leetcode56-
区间合并】合并区间
导读热词
问题描述:
给出⼀个区间的集合,请合并所有重叠的区间。
⽰例 1:
输⼊: [[1,3],[2,6],[8,10],[15,18]]
输出: [[1,18]]
解释: 区间 [1,3] 和 [2,6] 重叠,将它们合并为 [1,6].
⽰例 2:
输⼊: [[1,4],[4,5]]
输出: [[1,5]]
解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。
这题之间看过,今天⼜看到了,⼤致知道是先要排序,但是忘了怎么更新结果。
核⼼:其实是贪⼼法的体现,关注于相邻的两个数组,那么就有两种情况,以[[1,18]]为例。
先对⼆维数组按⼀维数组的第0位进⾏排序,假设结果是res=[]。
当res为空时先将[1,3]加⼊到res中,再遍历到[2,6],此时有两种情况,如果当前数组的第0位⼤于res中最后⼀个数组的第1位,说明当前数组和res末尾的数组不会重叠,此时之间将当前数组加到res末尾。如果当前数组第0位⼩于或等于res末尾数组第1位,再判断当前数组第1位和res末尾数组第⼀位誰⼤,将其更新res末尾数组的第⼀位。依次类推。
301_25@
class@H_301_29@ Solution:
python数组合并def merge(self,intervals: List[List[@H_301_29@int]]) -> List[List[@H_301_29@int@H_301_29@]]:
res =@H_301_29@ []
intervals.sort()
@H_301_29@for i @H_301_29@in@H_301_29@ intervals:
@H_301_29@if not res or res[-1][1]
res.append(i)
@H_301_29@else@H_301_29@:
res[-1] = max(res[-1],i[1@H_301_29@])
@H_301_29@return res
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论