""" 整合区间 给定一个数组,表示若干个区间的集合。 其中,数组中每个元素为一个区间。 合并所有重叠的区间, 返回一个不重叠的区间数组, 该数组需恰好覆盖输入中的所有区间。 """ 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))
评论前必须登录!
注册