题解 | #合并区间#[]

合并区间

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

1

老朋友 C/c++/java实现 主要是梳理思路,关键排序提出

2


#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main( )
{
    int a, b;
    char sep;
    vector<vector<int> > source , ret;
    while( cin>>a>>sep>>b)
        source.push_back({a,b} );
    sort(source.begin(),source.end());
    
    int left , right;
    
    for(int i =0 ; i< source.size(); i++){
        left = source[i][0], right = source[i][1];
        if( ret.size()==0 || ret.back()[1] < left){
            ret.push_back( source[i]);//{left,right}
        }else{
            //右边界容易错哈
            //source[i][1] = max( ret.back()[1] , right);//这条浪费5分站
            ret.back()[1] = max( ret.back()[1] , right);
        }
    }
    
    for(int j=0; j<ret.size();j++){
        cout<<ret[j][0]<<","<<ret[j][1];
        if(j-1 - ret.size() !=0){
            cout<<" ";
        }
    }
    
    return 0;
    
}
全部评论
合理的数据结构, 要么 读结果vector的 ret.back()[1] 要么 刷新 ret.back()[1]
点赞
送花
回复
分享
发布于 2022-11-22 11:44 四川

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务