从Python的间隔列表中查找总唯一持续时间的程序
假设我们有一个间隔列表,其中每个列表代表一个间隔[开始,结束](包括开始)。我们必须找到它涵盖的总的唯一持续时间。
因此,如果输入像间隔=[[2,11],[13,31],[41,61]],则输出将为50,因为总的唯一覆盖距离为(11-2+1)=10,则(31-13+1)=19,而(61-41+1)=21,因此总数为50。
为了解决这个问题,我们将遵循以下步骤-
如果间隔列表为空,则
返回0
排序列表间隔
[开始,结束]:=间隔[0]
回答:=0
对于间隔中的每个开始和结束(s,e),请执行
结束:=结束的最大值,e
ans:=ans+结束-开始+1
开始:=s,结束:=e
如果s>end,则
除此以外,
ans:=ans+结束-开始+1
返回ans
让我们看下面的实现以更好地理解-
示例
class Solution:
def solve(self, intervals):
if not intervals:
return 0
intervals.sort()
start, end = intervals[0]
ans = 0
for s, e in intervals:
if s > end:
ans += end - start + 1
start = s
end = e
else:
end = max(end, e)
ans += end - start + 1
return ans
ob = Solution()intervals = [[2, 11],[13, 31],[41, 61]]
print(ob.solve(intervals))输入值
[[2, 11],[13, 31],[41, 61]]
输出结果
50