算法解析:
class Solution { public: vector<vector<int>> merge(vector<vector<int>>& intervals) { // 此题最关键的就是排序,如果不排序很难处理 sort(intervals.begin(), intervals.end()); // 按照左端点从小到大排序 vector<vector<int>> res; int len = intervals.size(); for(int i = 0; i < len; i++){ int L = intervals[i][0]; int R = intervals[i][1]; // 如果res中没有区间,或者当前区间的左端点比res中最后一个区间右端点大, // 说明当前区间不在res目前区间里面,则添加新区间到res中。 if(res.size()==0||res[res.size()-1][1]<L){ res.push_back({L,R}); // 直接添加一维数组的办法 }else{ // 因为当前区间在res的最后一个区间里面,所以需要更新res中最后一个区间的右端点 // 比较右端点的长度, res[res.size()-1][1] = max(res[res.size()-1][1],R); } } return res; } };