题解 | 区间合并-2
区间合并-2
https://www.nowcoder.com/practice/9be49b2117b44622ae3cef456dbc7e70
注意有坑 区间的首尾是整形 也就是说 当遇到[1,3] [4,6]这两个区间的时候,是要合并成[1,6]的
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct interval {
long long a;
long long b;
};
bool cmp (interval p1, interval p2 ) {
return p1.a < p2.a;
}
int main() {
long long index ;
while (cin >> index) {
vector <interval> val ;
interval temp ;
// read the data in
for (int i = 0; i < index; i++) {
cin >> temp.a >> temp.b;
val.push_back(temp);
}
//sort the data
sort (val.begin(), val.end(), cmp);
for (long long i = 1; i < index; i++ ) {
if (val[i - 1].b+1 >= val[i].a) {
val[i].a = val[i - 1].a;
val[i].b = max(val[i - 1].b, val[i].b);
} else cout << val[i - 1].a << ' ' << val [i - 1].b <<'\n';
}
cout << val[index - 1].a << ' ' << val[index - 1].b << '\n';
}
}
查看9道真题和解析