56.合并区间
【LetMeFly】56.合并区间
力扣题目链接:https://leetcode.cn/problems/merge-intervals/
以数组 intervals
表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]
。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。
示例 1:
输入:intervals = [[1,3],[2,6],[8,10],[15,18]] 输出:[[1,6],[8,10],[15,18]] 解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
示例 2:
输入:intervals = [[1,4],[4,5]] 输出:[[1,5]] 解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。
提示:
1 <= intervals.length <= 104
intervals[i].length == 2
0 <= starti <= endi <= 104
方法一:排序
直接对intervals数组进行一个sort,使用两个变量from和to分别指向当前区间的起点和终点。
遍历区间:
- 如果当前区间不能和[from, to]合并,则将[from, to]放入答案中,并开始计新的区间
- 否则,更新[from, to]的结尾to的覆盖范围
即可。
- 时间复杂度$O(n\log n)$,其中$n = len(intervals)$
- 空间复杂度$O(\log n)$
AC代码
C++
1 |
|
Python
1 |
|
同步发文于CSDN,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/132520291
56.合并区间
https://blog.letmefly.xyz/2023/08/27/LeetCode 0056.合并区间/