在Python中编写用于计算完全包含在其他区间内的区间数字的程序

在Python中编写用于计算完全包含在其他区间内的区间数字的程序

假设我们有一个区间列表。在该列表中,interval[i]具有[start,end]值。我们必须找到由其他区间包含的区间数。如果有一个区间被多个其他区间包含,那么只有一次被计算。当s0 ≤ s1且e0 ≥ e1时,区间[s0,e0]在另一个区间[s1,e1]内。

因此,如果输入是intervals = [[2,6],[3,4],[4,7],[5,5]],则输出将为2,因为[3,4]和[5,5]分别在[2,6]和[4,7]之内。

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

  • 如果间隔列表为空,则
    • 返回0
  • 根据开始时间对间隔列表进行排序,当开始时间相同时,按结束时间的降序排序
  • end_mx := -无穷大
  • ans := 0
  • 对于间隔中的每个(start,end)对,执行以下操作
    • 如果end <= end_mx,则
      • ans := ans + 1
    • end_mx := end_mx和end的最大值
  • 返回ans

示例

让我们看下面的实现以更好地理解 –

 def solve(intervals):
   if not intervals:
      return 0

   intervals.sort(key=lambda x: (x[0], -x[1]))

   end_mx = float("-inf")
   ans = 0

   for start, end in intervals:
      if end <= end_mx:
         ans += 1

      end_mx = max(end_mx, end)

   return ans

intervals = [[2,6],[3,4],[4,7],[5,5]]
print(solve(intervals))

输入

[[2,6],[3,4],[4,7],[5,5]]

输出

2

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程