用 Python 编写的程序,从间隔列表中查找最长间隔的长度
pythonserver side programmingprogramming
假设我们有一个间隔列表,其中每个间隔的形式为 [start, end]。我们必须找到通过合并任意数量的重叠间隔可以得到的最长间隔。
因此,如果输入为 [[1, 6],[4, 9],[5, 6],[11, 14],[16, 20]],则输出将为 9,因为合并后,我们有长度为 9 的间隔 [1, 9]。
为了解决这个问题,我们将遵循以下步骤 −
- 对列表间隔进行排序
- union := 间隔列表中的第一个间隔
- best := union[end] - union[start] + 1
- 对于除第一个间隔之外的每个开始时间 s 和结束时间 e,执行
- 如果 s <= union[end],则
- union[end] := union[end] 和 e 的最大值
- 否则,
- union := 一个新的区间 [s, e]
- best := best 和 union[end] - union[start] + 1 的最大值
- 如果 s <= union[end],则
- 返回 best
让我们看看下面的实现以便更好地理解 −
示例
class Solution: def solve(self, intervals): intervals.sort() union = intervals[0] best = union[1] - union[0] + 1 for s, e in intervals[1:]: if s <= union[1]: union[1] = max(union[1], e) else: union = [s, e] best = max(best, union[1] - union[0] + 1) return best ob = Solution() intervals = [[1, 6],[4, 9],[5, 6],[11, 14],[16, 20]] print(ob.solve(intervals))
输入
[[1, 6],[4, 9],[5, 6],[11, 14],[16, 20]]
输出
9
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

