快捷搜索: 王者荣耀 脱发

华为机试:整型数组合并

一、题目:

描述

题目标题:

将两个整型数组按照升序合并,并且过滤掉重复数组元素。

输出时相邻两数之间没有空格。

请注意本题有多组样例。

输入描述:

输入说明,按下列顺序输入: 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;
}
经验分享 程序员 微信小程序 职场和发展