模拟将各个零散的区间()进行合并,取有交集的区间的并集
最后统计一共有多少个并集
void merge(vector<pair(int,int)>arr)
{
int st=-2e9;int ed=-2e9; //设置两个指针指向第一位
vector<pair(int,int)>brr; //维护数据
for(auto item:arr) //遍历arr数组
{
if(ed<item.first) // 两个集合间没有交集
{
if(st!=-2e9)brr.push_back({st,ed}); //确定一个集合放入维护数组中
st=item.first;ed=item.second;
}
else ed=max(item.second,ed);
}
if(st!=0)brr.push_back(st,ed) //将最后一个集合放入维护数组中
a=b;
}