知识点:数组+排序
C++实现:
class Solution {//数组+排序
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
vector<vector<int>> res; //声明res
if(intervals.empty()) return res; //判断边界
sort(intervals.begin(),intervals.end()); //根据区间的左边界进行排序,sort函数是C++算法库中的函数
int index = 0; //res的遍历索引
res.push_back(intervals[0]); //先将intervals中的第一个区间放到res里面
for (int i = 1; i < intervals.size(); i++) //遍历intervals的其他区间
{
if(res[index][1] >= intervals[i][0]) //res从index开始,由于intervals已经排序,如果满足res[index]的右区间 大于
{ //intervals[i]的左区间,表明这两个区间有交集
if(res[index][1] < intervals[i][1]) //除此之外,还要判断res[index]的右区间 与 intervals[i]的右区间的关系,
{ //如果res[index]的右区间 小于 intervals[i]的右区间,则取较大值,反之不变。
res[index][1] = intervals[i][1]; //例如 [[1,4] ,[2,3]] -> [[1,4]]
}
}
else
{
index++; //如果不满足有联通区域,直接将index++,并将当前的intervals[i] 放到res里面,进行下一时刻的合并
res.push_back(intervals[i]);
}
}
return res;
}
};