LeetCode56:合并区间

Posted __rookie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode56:合并区间相关的知识,希望对你有一定的参考价值。

给出一个区间的集合,请合并所有重叠的区间。

示例 1:

输入: [[1,3],[2,6],[8,10],[15,18]]
输出: [[1,6],[8,10],[15,18]]
解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
示例 2:

输入: [[1,4],[4,5]]
输出: [[1,5]]
解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。

 

可以先对vector进行排序,然后按顺序遍历,这样能merge到一起的区间一定是挨着的,可以直接遍历然后merge。

这里sort直接就默认使用第一个元素?vector的sort可以通过自己定义排序函数来sort。

 1 class Solution {
 2 public:
 3     vector<vector<int>> merge(vector<vector<int>>& intervals) {
 4         if (intervals.size() == 0) {
 5             return {};
 6         }
 7         sort(intervals.begin(), intervals.end());
 8         vector<vector<int>> merged;
 9         for (int i = 0; i < intervals.size(); ++i) {
10             int L = intervals[i][0], R = intervals[i][1];
11             if (!merged.size() || merged.back()[1] < L) {
12                 merged.push_back({L, R});
13             }
14             else {
15                 merged.back()[1] = max(merged.back()[1], R);
16             }
17         }
18         return merged;
19     }
20 };

 

以上是关于LeetCode56:合并区间的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 56. 合并区间

精选力扣500题 第45题 LeetCode 56. 合并区间c++/java详细题解

leetcode56 合并区间

力扣leetcode 56. 合并区间

leetcode| 56. 合并区间

Leetcode 56. 合并区间