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:合并区间的主要内容,如果未能解决你的问题,请参考以下文章