在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的最大值
- 如果end <= end_mx,则
- 返回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