在Python中查找一组时间间隔的总唯一时间长度的程序

在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的最大值
  • 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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程