在 Python 中检查是否有任何区间完全重叠


假设,我们得到一组区间,其中包含值 (a,b),其中 a 表示事件的开始时间,b 表示事件的结束时间。我们的任务是检查这些区间中是否有任何区间完全重叠于其他任何区间。如果任何区间重叠,则返回结果 True,否则返回 False。

因此,如果输入类似于 [(4,6), (10,12), (7,9), (13,16)],则输出将为 False。如果输入类似于 [(4,6), (4,9), (7,11), (5,8)],则输出将为 True。

为了解决这个问题,我们将遵循以下步骤 -

  • 对区间列表进行排序
  • 对于 i 从 1 到区间大小,执行以下操作
    • 如果 intervals[i, 1] <= intervals[i- 1, 1],则
      • 返回 True
    • 返回 False

让我们看看下面的实现以获得更好的理解 -

示例

 实时演示

def solve(intervals):
intervals.sort()
for i in range(1, len(intervals)):
   if intervals[i][1] <= intervals[i- 1][1]:
      return True
   return False
intervals = [(4,6),(10,12),(7,9),(13,16)] 
intervals2 = [(4,6), (4,9), (7,11), (5,8)] 
print(solve(intervals))
print(solve(intervals2))

输入

[(4,6),(10,12),(7,9),(13,16)] [(4,6), (4,9), (7,11), (5,8)]

输出

False
True

更新于: 2020-12-30

2K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.