LeetCode热门100题-合并区间-不熟练
- 创业
- 2025-09-09 21:48:01

题目描述:
以数组 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]. class Solution { public: vector<vector<int>> merge(vector<vector<int>>& intervals) { vector<vector<int>> merged; if (intervals.empty()) return merged; // 1. 按照区间的起始值排序 sort(intervals.begin(), intervals.end()); // 2. 遍历排序后的区间,进行合并 for (const auto& interval : intervals) { // 如果 merged 为空或当前区间和 merged 中的最后一个区间不重叠 if (merged.empty() || merged.back()[1] < interval[0]) { merged.push_back(interval); // 不重叠,直接添加 } else { // 否则,重叠,更新 merged 中最后一个区间的结束值 merged.back()[1] = max(merged.back()[1], interval[1]); } } return merged; } };学习新的用法:
sort(intervals.begin(), intervals.end());
max(merged.back()[1], interval[1]);
记录:
class Solution { public: vector<vector<int>> merge(vector<vector<int>>& intervals) { vector<vector<int>> result; sort(intervals.begin(),intervals.end()); for(const auto&interval:intervals) //这一块不熟练 { if(result.empty()||result.back()[1]<interval[0]) { result.push_back(interval); } else{ result.back()[1]=max(interval[1],result.back()[1]); } } return result; } };LeetCode热门100题-合并区间-不熟练由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“LeetCode热门100题-合并区间-不熟练”