代码随想录打卡day25:56.合并区间

题目链接:56. 合并区间 - 力扣(LeetCode)
思路:
先按左边界排序,然后开始遍历。发现有当前位置区间和前一位置区间有交集,就合并区间并存放在当前位置,这样可以方便之后遍历的下一位置i+1与当前位置i对比看是否有交集。若无交集则将当前位置i存放的区间放到res中。
代码如下:
class Solution {
public:vector<vector<int>> merge(vector<vector<int>>& intervals) {sort(intervals.begin(),intervals.end(),[](const vector<int> &a,const vector<int>&b){if(a[0]==b[0]){return a[1]<b[1];}else return a[0]<b[0];});vector<vector<int>> res;if(intervals.size()<=1) return intervals;for(int i=1;i<intervals.size();++i){if(intervals[i][0]<=intervals[i-1][1]){intervals[i][0]=min(intervals[i][0],intervals[i-1][0]);intervals[i][1]=max(intervals[i][1],intervals[i-1][1]);}else{vector<int> path={intervals[i-1][0],intervals[i-1][1]};res.push_back(path);}if(i==intervals.size()-1){res.push_back({intervals[i][0],intervals[i][1]});}}return res;}
};
