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;
    
}