56. 合并区间

 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 };

 

posted @ 2020-03-19 18:39  Jinxiaobo0509  阅读(112)  评论(0)    收藏  举报