三种解法
2026-10-11 20:34:02
发布于:浙江
4阅读
0回复
0点赞
此题难度不高,解法到挺多
1.multiset解法
multiset是STL里的可重复元素集合(set的元素不可重复),他的底层是红黑树,可自动排序。把这题的两个数组看作一个,用此
容器输入输出即可
AC代码:
#include <bits/stdc++.h>
using namespace std;
int n,m;
multiset<int> ms;
int main(){
cin>>n>>m;
for(int i=0;i<n+m;i++){
int t;
cin>>t;
ms.insert(t);
}
for(auto i:ms){
cout<<i<<" ";
}
return 0;
}
2.这个解法麻烦(不建议使用)
两个数组输入,数组合并,排序输出(类似分治)。注:我用的是multiset会自动排序,所以不需要排序
AC代码:
#include <bits/stdc++.h>
using namespace std;
int n,m;
vector<int>a,b;
multiset<int> ms;
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
int t;
cin>>t;
a.push_back(t);
}
for(int i=0;i<m;i++){
int t;
cin>>t;
b.push_back(t);
}
for(auto i:a){
ms.insert(i);
}
for(auto i:b){
ms.insert(i);
}
for(auto i:ms){
cout<<i<<" ";
}
return 0;
}
3.sort排序解法(比第二种简便)
和第一种一样,把两个数组看作一个,输入排序输出即可。
AC代码
#include <bits/stdc++.h>
using namespace std;
int n,m;
int a[100010];
int main() {
cin >> n >> m;
for(int i = 1;i <= n + m;i++){
cin >> a[i];
}
sort(a + 1,a + 1 + n + m);
for(int i = 1;i <= n + m;i++){
cout << a[i] << " ";
}
return 0;
}
备注千万别用set!!,麻烦点个赞谢谢
全部评论 1
顶
4天前 来自 浙江
1








有帮助,赞一个