华为机试:整型数组合并
一、题目:
描述
题目标题:
将两个整型数组按照升序合并,并且过滤掉重复数组元素。
输出时相邻两数之间没有空格。
请注意本题有多组样例。
输入描述:
输入说明,按下列顺序输入: 1 输入第一个数组的个数 2 输入第一个数组的数值 3 输入第二个数组的个数 4 输入第二个数组的数值
输出描述:
输出合并之后的数组
二、输入输出示例:
三、代码:
1、偷懒,直接用set容器:
#include<iostream>
using namespace std;
#include<set>
int main()
{
int n1;
while(cin>>n1){
int num;
set<int> res;
for(int i=0;i<n1;i++){
cin>>num;
res.insert(num);
}
int n2;
cin>>n2;
for(int i=0;i<n2;i++){
cin>>num;
res.insert(num);
}
for(set<int>::iterator it = res.begin();it != res.end();it++){
cout<<(*it);
}
cout<<endl;
}
system("pause");
return 0;
}
2、冒泡 + 去重
#include<iostream>
using namespace std;
#include<vector>
int main()
{
int n1,n2,num;
while(cin>>n1){
int a[n1];
for(int i=0;i<n1;i++){
cin>>num;
a[i] = num;
}
cin>>n2;
int b[n2];
for(int i=0;i<n2;i++){
cin>>num;
b[i] = num;
}
int res[n1+n2];
for(int i=0;i<n1;i++){
res[i] = a[i];
}
int flag = 0;
for(int i=n1;i<n1+n2;i++){
res[i] = b[flag++];
}
for(int i=0;i<n1+n2-1;i++){
for(int j=0;j<n1+n2-1;j++){
if(res[j] > res[j+1]){
int temp = res[j];
res[j] = res[j+1];
res[j+1] = temp;
}
}
}
cout<<res[0];
int num = res[0];
for(int i=1;i<n1+n2;i++){
if(res[i] == num){
continue;
}
else{
num = res[i];
cout<<res[i];
}
}
cout<<endl;
}
system("pause");
return 0;
}
下一篇:
华为机试练习(四)勾股数元组
