思路
先按照左区间进行排序,然后初始化left和right,重叠时,更新right,不重叠时,收集区间
代码
class Solution {
public:static bool cmp(vector<int> a, vector<int> b){if(a[0] == b[0]){return a[1] < b[1];}return a[0] < b[0];}vector<vector<int>> merge(vector<vector<int>>& intervals) {sort(intervals.begin(), intervals.end(), cmp);vector<vector<int>> res;int left = intervals[0][0];int right = intervals[0][1];for(int i = 1; i < intervals.size(); i++){if(intervals[i][0] <= right){right = max(right, intervals[i][1]);}else{vector<int> n = {left, right};res.push_back(n);left = intervals[i][0];right = intervals[i][1];}}vector<int> n = {left, right};res.push_back(n);return res;}
};