【LeetCode】56. Merge Intervals 解题记录
问题描述
Given an array of intervals where intervals[i] = [starti, endi], merge all overlapping intervals, and return an array of the non-overlapping intervals that cover all the intervals in the input.
测试样例
1 | Input: intervals = [[1,3],[2,6],[8,10],[15,18]] |
1 | Input: intervals = [[1,4],[4,5]] |
说明
1 | Input: intervals = [[1,4],[4,5]] |
解题
思路
首先,将数组按照 start
排序,遍历数组:
-
若当前元素为第一个或
start >= 最新 interval 的 end
,加入结果 -
若
start < 最新 interval 的 end
,且end > 最新 interval 的 end
,调整最新interval
的end
为当前元素的end
补充:
- 时间复杂度
O(logn)
- 注意判断被最新
interval
完全包裹的元素
代码
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 哆啦 C 梦!
评论