1 class Solution 2 { 3 public: 4 vector<vector<int>> merge(vector<vector<int>>& nums) 5 { 6 vector<vector<int>> res; 7 if(nums.empty()) return res; 8 sort(nums.begin(),nums.end());//首先将所有nums排序,默认左端点升序 9 int m = nums.size(); 10 int start = nums[0][0],end = nums[0][1]; 11 12 for(int i = 1;i < m;i ++) 13 { 14 //此时有3种情况 15 //1、当前右端点小于end 16 //2、当前右端点大于end且end大于当前左端点 17 //3、end小于当前左端点 18 if(nums[i][1] < end) continue; 19 else if(nums[i][1] >= end && nums[i][0] <= end) end = nums[i][1]; 20 else if(nums[i][0] > end) 21 { 22 res.push_back({start,end}); 23 start = nums[i][0],end = nums[i][1]; 24 } 25 } 26 res.push_back({start,end}); 27 return res; 28 } 29 };
原文:https://www.cnblogs.com/yuhong1103/p/12526404.html