题解 | #整型数组合并#
整型数组合并
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")