华为机试:整型数组合并
一、题目:
描述
题目标题:
将两个整型数组按照升序合并,并且过滤掉重复数组元素。
输出时相邻两数之间没有空格。
请注意本题有多组样例。
输入描述:
输入说明,按下列顺序输入: 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; }
下一篇:
华为机试练习(四)勾股数元组