本文主要是介绍刷代码随想录有感(95):合并区间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题干:
代码:
class Solution {
public:static bool cmp(vector<int>& a, vector<int>& b){return a[0] < b[0];}vector<vector<int>> merge(vector<vector<int>>& intervals) {sort(intervals.begin(), intervals.end(), cmp);vector<vector<int>> res;res.push_back(intervals[0]);for(int i = 1; i < intervals.size(); i++){if(intervals[i][0] <= res.back()[1]){if(intervals[i][1] > res.back()[1]){res.back()[1] = intervals[i][1];}}else res.push_back(intervals[i]);}return res;}
};
注意到全程参与比较的只有第i位数据和res.back()。重叠,判断右边界是否被囊括(大于则更新),如果不重叠则直接加入res。
这篇关于刷代码随想录有感(95):合并区间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!