"""
整合区间
给定一个数组,表示若干个区间的集合。
其中,数组中每个元素为一个区间。
合并所有重叠的区间,
返回一个不重叠的区间数组,
该数组需恰好覆盖输入中的所有区间。
"""
def merge(intervals):
"""
合并重叠的区间。
参数:
intervals: 一个二维列表,其中每个元素是一个包含两个整数的列表,表示一个区间。
返回:
一个二维列表,包含所有不重叠的区间。
方法:
1. 对输入的区间按照起始位置进行排序。
2. 遍历排序后的区间列表,如果当前区间的起始位置小于等于前一个区间的结束位置,则将两个区间合并。
3. 如果当前区间的起始位置大于前一个区间的结束位置,则将当前区间加入结果列表。
"""
# 根据区间的起始位置对区间进行排序
intervals.sort(key=lambda x: x[0])
# 初始化结果列表
res = []
# 遍历排序后的区间列表
for i in intervals:
# 如果结果列表为空或当前区间与前一个区间不重叠,则将当前区间加入结果列表
if not res or res[-1][1] < i[0]:
res.append(i)
# 如果当前区间与前一个区间重叠,则合并区间
else:
res[-1][1] = max(res[-1][1], i[1])
# 返回合并后的区间列表
return res
if __name__ == '__main__':
# 初始化一个测试用的区间列表
intervals = [[1, 3], [2, 6], [8, 10], [15, 18]]
# 调用merge函数合并区间,并打印结果
print(merge(intervals))
评论前必须登录!
注册