57. 插入区间

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

 

posted @ 2020-04-29 21:55  Jinxiaobo0509  阅读(148)  评论(0)    收藏  举报