题目:56. 合并区间 - 力扣(Leetcode)
讲这道题之前,先介绍一下sort函数的骚操作。
sort函数可以用于二维数组的排序!!!
解释:
这里sort函数也是从小到大进行排序,只不过它的排序对象是对每对序列的第一个数进行排序的
结果:
知道sort这种用法后,那么解决这道题就会变得非常容易!!!
分析:要进行区间的合并,必须满足以下两个条件:
(我们令可以合并的两个区间分别为x区间和y区间,x.0:x区间的起点,x.1:x区间的尾点)
所具备的条件为:1: 2:
代码:
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
vector<vector<int>>ans;
sort(intervals. begin(),intervals. end());
/*使区间由起点进行排序,这样以来,相邻的两个区间就具有可合并的可能*/
int j=0;
ans.push_back(intervals[0]);
for(int i=1;i<intervals. size();i++){
if(ans[j][1]>=intervals[i][0]){
if(ans[j][1]<intervals[i][1]) ans[j][1]=intervals[i][1];
}
else ans.push_back(intervals[i]),j++;
}
return ans;
}
};