题解 | #合并区间#[]
合并区间
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;
}