LeetCode 56. 合并区间
思路:
把所有的区间按照左端点排序,然后维护当前的一个合并的区间,首先取l和r是第一个区间的端点,如果下一个区间的左端点小于当前区间的右端点则更新r,否则就是一个可以合并的区间,然后更新l和r为下一个不能合并的区间的端点。
代码:
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
int n=intervals.size();
vector<vector<int>> res;
sort(intervals.begin(),intervals.end());
int l=intervals[0][0];
int r=intervals[0][1];
for(int i=0;i<n;i++){
if(intervals[i][0] > r){
res.push_back({l,r});
l=intervals[i][0];
r=intervals[i][1];
}
else{
r=max(r,intervals[i][1]);
}
}
res.push_back({l,r});
return res;
}
};
评论区