在Python中查找一组时间间隔的总唯一时间长度的程序
假设我们有一个表示时间间隔[start,end](包括)的列表。我们必须找到它所覆盖的总唯一时间长度。
因此,如果输入为intervals = [[2,11],[13,31],[41,61]],则输出为50,因为总唯一覆盖距离为(11-2 + 1)=10,然后(31-13 + 1)=19和(61-41 + 1)= 21,因此总数为50。
为了解决此问题,我们将遵循以下步骤 –
- 如果间隔列表为空,则
- 返回0
- 对intervals进行排序
- [开始,结束]:= intervals [0]
- ans:= 0
- 对于intervals中的每个开始和结束(s,e),执行以下操作
- 如果s> end,则
- ans:= ans + end-start + 1
- start:= s,end:= e
- 否则,则
- end:= end,e的最大值
- 如果s> end,则
- ans:= ans + end-start + 1
- 返回ans
让我们看下面的实现,以更好的理解为例 –
更多Python相关文章,请阅读:Python 教程
例子
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