读入若干个用start,end表示的区间(输入数据已按主关键字start,次关键字end升序排序),合并所有重叠的区间,最终以列表形式输出一个不重叠的区间。
时间: 2024-04-14 12:29:29 浏览: 75
读入数据按从小到大排序输出到文本
5星 · 资源好评率100%
可以使用以下代码来合并重叠的区间:
```python
intervals = [] # 存储输入的区间
merged = [] # 存储合并后的区间
# 读入并存储区间
for line in sys.stdin:
t = list(map(int, line.strip().split(",")))
intervals.append(t)
# 合并区间
for interval in intervals:
if not merged or merged[-1][1] < interval[0]:
merged.append(interval)
else:
merged[-1][1] = max(merged[-1][1], interval[1])
print(merged)
```
在上面的代码中,我们首先创建两个空列表,`intervals` 用于存储输入的区间,`merged` 用于存储合并后的区间。然后,我们逐个遍历输入的区间,并将其与已合并的区间进行比较。如果当前区间与已合并的区间不重叠,则直接将其添加到 `merged` 列表中。如果重叠,则更新已合并的区间的结束位置,以确保包含当前区间。最后,输出合并后的区间列表。
阅读全文