现有若干个会议,所有会议共享一个会议室,用数组表示各个会议的开始时间和结束时间,格式为:会议1开始时间,会议1结束时间会议2开始时间,会议2结束时间请计算会议室占用时间段。
输入描述为:第一行输入一个整数n,表示会议数量之后输入n行,每行两个整数,以空格分隔,分别表示会议开始时间,会议结束时间例如:
1 2
2 13
3 34
输出描述为:输出多行,每个两个整数,以空格分隔,分别表示会议室占用时间段开始和结束
def merge_meeting_times(meetings):
# 按照会议开始时间对会议进行排序
sorted_meetings = sorted(meetings, key=lambda x: x[0])
# 合并重叠的会议时间段
merged_meetings = []
merged_meeting_start, merged_meeting_end = sorted_meetings[0]
for current_meeting_start, current_meeting_end in sorted_meetings[1:]:
if current_meeting_start <= merged_meeting_end:
# 如果当前会议与上一个会议有重叠,则更新结束时间
merged_meeting_end = max(merged_meeting_end, current_meeting_end)
else:
# 如果当前会议与上一个会议没有重叠,则添加上一个会议时间段到结果列表
merged_meetings.append((merged_meeting_start, merged_meeting_end))
# 开始新的会议时间段
merged_meeting_start, merged_meeting_end = current_meeting_start, current_meeting_end
# 添加最后一个会议时间段到结果列表
merged_meetings.append((merged_meeting_start, merged_meeting_end))
return merged_meetings
# 测试数据
meetings = [(1, 2), (2, 13), (3, 4)]
merge_meeting_times(meetings)