用 Python 编写的程序,用于从间隔列表中查找总唯一持续时间
pythonserver side programmingprogramming
假设我们有一个间隔列表,其中每个列表代表一个间隔 [开始,结束](含)。我们必须找到它所覆盖的唯一总持续时间。
因此,如果输入为 intervals = [[2, 11],[13, 31],[41, 61]],则输出将为 50,因为唯一总覆盖距离为 (11 - 2 + 1) = 10,然后 (31 - 13 + 1) = 19 和 (61 - 41 + 1) = 21,因此总计为 50。
为了解决这个问题,我们将遵循以下步骤 −
- 如果 intervals 列表为空,则
- 返回 0
- 对列表 intervals 进行排序
- [start, end] := intervals[0]
- ans := 0
- 对于 intervals 中的每个 start 和 end(s,e),执行
- 如果 s > end,则
- ans := ans + end - start + 1
- start := s, end := e
- 否则,
- end := maximum of end, e
- 如果 s > end,则
- ans := ans + end - start + 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
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

