【LeetCode】56. 合并区间
解题思路
-
排序预处理
将区间按起始点升序排序,确保后续只需比较相邻区间即可完成合并。 -
贪心合并策略
维护一个合并后的结果数组,逐个判断当前区间是否与结果数组最后一个区间重叠:- 重叠:更新结果数组最后一个区间的右边界为两者的最大值
- 不重叠:将当前区间加入结果数组
-
边界处理
- 空输入直接返回空数组
- 初始化结果数组时直接放入第一个区间
复杂度分析
- 时间复杂度:O(n log n),排序耗时 O(n log n),遍历合并耗时 O(n)
- 空间复杂度:O(n),存储合并后的结果数组
代码实现
运行示例
扩展讨论
- 端点重叠处理:示例2中的
[1,4]和[4,5]属于端点相接的特殊重叠场景,算法已天然支持这种判断 - 全包含优化:当
[1,4]包含[2,3]时,算法自动保留更大的右边界 - 时间复杂度优势:相比暴力法的 O(n²) 复杂度,排序后的贪心策略效率显著提升

浙公网安备 33010602011771号