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 };

猜你喜欢

转载自www.cnblogs.com/rookiez/p/13211151.html