python 列表间隔取值_程序从Python中的间隔列表中查找最长间隔的长度

假设我们有一个间隔列表,其中每个间隔的格式为[start,end]。我们必须找到可以合并任意数量的重叠间隔的最长间隔。

因此,如果输入类似于[[1,6],[4,9],[5,6],[11,14],[16,20]],则输出将为9,如合并后,我们有长度为9的间隔[1,9]。

为了解决这个问题,我们将遵循以下步骤-排序列表间隔

union:=间隔列表中的第一个间隔

最佳:= union [end]-union [start] + 1

对于除第一个时间间隔以外的每个开始时间s和结束时间e,执行union:=一个新的间隔[s,e]

union [end]:= union [end]和e的最大值

如果s <= union [end],则

除此以外,

best:= best和union [end]的最大值-union [start] + 1

最好的回报

让我们看下面的实现以更好地理解-

示例class Solution:

def solve(self, intervals):

intervals.sort()

union = intervals[0]

best = union[1] - union[0] + 1

for s, e in intervals[1:]:

if s <= union[1]:

union[1] = max(union[1], e)

else:

union = [s, e]

best = max(best, union[1] - union[0] + 1)

return best

ob = Solution()intervals = [[1, 6],[4, 9],[5, 6],[11, 14],[16, 20]]

print(ob.solve(intervals))

输入项[[1, 6],[4, 9],[5, 6],[11, 14],[16, 20]]

输出结果9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值