区间合并,是指将若干个有交集的区间合并为 1 个区间。
def merge_intervals(intervals):
# 排序
intervals = sorted(intervals, key=lambda x: x[0])
merged = []
for interval in intervals:
# 如果当前区间和上一个区间有重叠,合并两个区间
if merged and interval[0] <= merged[-1][1]:
merged[-1][1] = max(merged[-1][1], interval[1])
# 如果当前区间和上一个区间没有重叠,将当前区间加入结果列表
else:
merged.append(interval)
return merged
intervals = [[1, 3], [2, 6], [8, 10], [15, 18]]
merged_intervals = merge_intervals(intervals)
print(merged_intervals)
#输出[[1, 6], [8, 10], [15, 18]]
流程如下:
- 首先将输入的区间列表按照区间起点从小到大排序。
- 遍历排序后的区间列表,对于每个区间,如果它和上一个区间有重叠,那么将两个区间合并;如果它和上一个区间没有重叠,那么将当前区间加入结果列表。
- 最后返回合并后的区间列表。