知识点:数组+排序
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;
}
};
本文介绍了一种使用C++实现的数组排序与合并的方法,通过定义一个Solution类,内部包含了一个merge函数,该函数接收一个二维整数数组作为参数,表示一系列区间,并返回一个合并后的区间列表。首先,对输入的区间列表进行排序,然后遍历这些区间并合并有交集的区间。
425

被折叠的 条评论
为什么被折叠?



