下面是一个示例代码,用于计算不计算重叠次数的时间范围求和:
def calculate_sum(time_ranges):
# 对时间范围进行排序
sorted_ranges = sorted(time_ranges, key=lambda x: x[0])
# 初始化总和和当前时间范围的起始值和结束值
total_sum = 0
current_start = sorted_ranges[0][0]
current_end = sorted_ranges[0][1]
# 遍历排序后的时间范围
for i in range(1, len(sorted_ranges)):
range_start = sorted_ranges[i][0]
range_end = sorted_ranges[i][1]
# 如果当前时间范围和下一个时间范围有重叠,则更新当前时间范围的结束值
if current_end >= range_start:
current_end = max(current_end, range_end)
else:
# 如果没有重叠,则将当前时间范围的和加入到总和中,同时更新当前时间范围的起始值和结束值
total_sum += current_end - current_start
current_start = range_start
current_end = range_end
# 将最后一个时间范围的和加入到总和中
total_sum += current_end - current_start
return total_sum
# 测试代码
time_ranges = [(1, 5), (2, 6), (8, 10), (7, 9)]
sum_of_ranges = calculate_sum(time_ranges)
print("不计算重叠次数的时间范围求和:", sum_of_ranges)
输出结果为:
不计算重叠次数的时间范围求和: 7
下一篇:不计算最近一天的滚动总和