题解 | #整型数组合并#
整型数组合并
https://www.nowcoder.com/practice/c4f11ea2c886429faf91decfaf6a310b
#include <iostream>
#include <vector>
using namespace std;
//合并排序后的两个数组
vector<int> merge(vector<int>& A, vector<int>& B) {
vector<int> array;
int infinity = 0x3f3f3f3f;
A.push_back(infinity);
B.push_back(infinity);
int a = 0, b = 0;
for (int i = 0; i < (A.size() + B.size() - 2); i++) {
if (A[a] <= B[b]) {
array.push_back(A[a]);
a++;
} else {
array.push_back(B[b]);
b++;
}
}
return array;
}
//插入排序
void sort_array(vector<int>& array) {
for (int i = 0; i < array.size() - 1; i++) {
int min = i;
for (int j = i + 1; j < array.size(); j++) {
if (array[min] > array[j]) {
min = j;
}
}
if (min != i) {
int temp = array[i];
array[i] = array[min];
array[min] = temp;
}
}
}
int main() {
int m, n;
vector<int>A, B;
cin >> m;
for (int i = 0; i < m; i++) {
int tmp;
cin >> tmp;
A.push_back(tmp);
}
cin >> n;
for (int i = 0; i < n; i++) {
int tmp;
cin >> tmp;
B.push_back(tmp);
}
sort_array(A);
sort_array(B);
vector<int> merged_array(merge(A, B));
vector<int> result;
int last;
//去重,此处有更简单的写法
for(auto & i:merged_array){
if(result.empty()){
result.push_back(i);
last=i;
continue;
}
if(i==last){
continue;
}
result.push_back(i);
last=i;
}
for (auto& i : result) {
cout << i;
}
}
// 64 位输出请用 printf("%lld")
