【题解】合并区间

合并区间

http://www.nowcoder.com/questionTerminal/0596b6232ce74b18b60ba0367d7f2492

先把区间按区间的起始位置从小到大排序,然后从前往后看一遍,如果下一个区间的开始比前一个区间的末尾要小。那么这两个区间就可以合并。

#include<iostream>
#include<algorithm>

using namespace std;

const int MAXN = 1e5+10;
struct node{
    int s,e;
}Interval[MAXN];
bool visit[MAXN];
bool cmp(node a,node b)
{
    if(a.s==b.s)
    {
        return a. e< b.e;
    }
    return a.s < b.s;
}
int main()
{
    int a,b;
    char c;
    int cnt = 0;
    while(cin >> a >> c >> b)
    {
         Interval[cnt].s = a;
         Interval[cnt].e = b;
         visit[cnt]= true;
         cnt++;
    }
    sort(Interval,Interval+cnt,cmp);
    for(int i = 1 ; i < cnt ; i++)
    {
        if(Interval[i].s <= Interval[i-1].e)//合并两个区间
        {
            Interval[i].s = min(Interval[i-1].s,Interval[i].s);
            Interval[i].e = max(Interval[i-1].e,Interval[i].e);
            visit[i-1]=false;
        }
    }
    for(int i = 0 ; i < cnt ; i++)
    {
        if(visit[i])
        {
            cout<<Interval[i].s<<","<<Interval[i].e<<" ";
        }
    }

    return 0;
}
全部评论

相关推荐

和蔼:在竞争中脱颖而出,厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务