从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