要实现合并区间,你可以按照区间的起始位置对区间进行排序,然后依次遍历区间,将重叠的区间合并。以下是实现的示例代码:
def merge_intervals(intervals):if not intervals:return []# 按照区间的起始位置进行排序intervals.sort(key=lambda x: x[0])merged = [intervals[0]] # 初始化合并后的区间列表,将第一个区间加入其中for interval in intervals[1:]:if interval[0] <= merged[-1][1]: # 如果当前区间与合并后的最后一个区间有重叠merged[-1] = [merged[-1][0], 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:", merged_intervals)
在上面的代码中,我们首先对区间列表按照区间的起始位置进行排序。然后遍历排序后的区间列表,依次将区间与合并后的最后一个区间进行比较,如果有重叠,则更新合并后的最后一个区间的结束位置;如果没有重叠,则将当前区间加入合并后的列表中。
这个算法的时间复杂度为O(nlogn),其中n是区间的个数,因为排序的时间复杂度为O(nlogn),遍历一次区间列表的时间复杂度为O(n)。