首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

给定开始/结束时间数组的总空闲时间的算法

您好!根据您的问题,您需要一个算法来计算给定开始/结束时间数组的总空闲时间。以下是一个简单的算法,可以帮助您实现这个功能:

  1. 首先,将所有时间段按照开始时间进行排序。
  2. 初始化一个变量 free_time 为 0。
  3. 初始化一个变量 end_time 为 0。
  4. 遍历所有时间段: a. 如果当前时间段的开始时间大于 end_time,则计算空闲时间:free_time += (当前时间段开始时间 - end_time)。 b. 更新 end_timeend_time = 当前时间段结束时间
  5. 返回 free_time

以下是一个 Python 代码示例:

代码语言:python
代码运行次数:0
复制
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 是时间段的数量。请注意,这个算法仅适用于没有重叠的时间段。如果您需要处理重叠的时间段,您需要对算法进行一些修改。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券