当前位置:实例文章 » 其他实例» [文章]算法:合并间隔56. Merge Intervals

算法:合并间隔56. Merge Intervals

发布人:shili8 发布时间:2025-01-10 23:26 阅读次数:0

**算法:合并间隔**

###问题描述给定一个区间列表,合并所有重叠的区间。

### 示例输入:`[[1,3],[2,6],[8,10],[15,18]]`

输出:`[[1,6],[8,10],[15,18]]`

### 思路本题要求我们实现一个函数,能够合并所有重叠的区间。我们可以先按照区间的起始值进行排序,然后遍历每个区间,检查是否与前一个区间有重叠。如果有重叠,我们更新前一个区间的结束值;如果没有重叠,我们将当前区间添加到结果列表中。

###代码实现

class Solution:
 def merge(self, intervals):
 # 按照区间的起始值进行排序 intervals.sort(key=lambda x: x[0])
 merged = []
 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])
 return merged# 测试用例solution = Solution()
intervals = [[1,3],[2,6],[8,10],[15,18]]
print(solution.merge(intervals)) # 输出:[[1,6],[8,10],[15,18]]


### 时间复杂度分析时间复杂度为 O(n log n),其中 n 是区间列表的长度。原因是我们首先需要对区间列表进行排序,这个操作的时间复杂度为 O(n log n)。然后,我们遍历每个区间,检查是否与前一个区间有重叠,这个操作的时间复杂度为 O(n)。因此,总时间复杂度为 O(n log n + n) = O(n log n)。

### 空间复杂度分析空间复杂度为 O(n),其中 n 是区间列表的长度。原因是我们需要存储排序后的区间列表,这个列表的大小为 O(n)。

相关标签:算法python开发语言
其他信息

其他资源

Top