您好!根据您的问题,您需要一个算法来计算给定开始/结束时间数组的总空闲时间。以下是一个简单的算法,可以帮助您实现这个功能:
free_time
为 0。end_time
为 0。end_time
,则计算空闲时间:free_time += (当前时间段开始时间 - end_time)
。
b. 更新 end_time
:end_time = 当前时间段结束时间
。free_time
。以下是一个 Python 代码示例:
def total_free_time(time_ranges):
time_ranges.sort(key=lambda x: x[0])
free_time = 0
end_time = 0
for start, end in time_ranges:
if start > end_time:
free_time += (start - end_time)
end_time = end
return free_time
# 示例
time_ranges = [(1, 3), (2, 4), (5, 7)]
print(total_free_time(time_ranges)) # 输出:1
这个算法的时间复杂度为 O(nlogn),其中 n 是时间段的数量。请注意,这个算法仅适用于没有重叠的时间段。如果您需要处理重叠的时间段,您需要对算法进行一些修改。
领取专属 10元无门槛券
手把手带您无忧上云