假设我们有一个间隔列表,其中每个列表代表一个间隔[开始,结束](包括开始)。我们必须找到它涵盖的总的唯一持续时间。
因此,如果输入像间隔= [[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