您的位置:首页 > 其它

华为OJ(整形数组合并)

2015-08-16 13:42 302 查看
题目:整形数组合并

描述
题目标题:
将两个整型数组按照升序合并,并且过滤掉重复数组元素详细描述:接口说明原型:voidCombineBySort(int* pArray1,intiArray1Num,int* pArray2,intiArray2Num,int* pOutputArray,int* iOutputNum);输入参数:    int* pArray1 :整型数组1     intiArray1Num:数组1元素个数     int* pArray2 :整型数组2     intiArray2Num:数组2元素个数输出参数(指针指向的内存区域保证有效):    int* pOutputArray:合并后的数组     int* iOutputNum:合并后数组元素个数返回值:    void

知识点排序,数组
运行时间限制10M
内存限制128
输入输入说明,按下列顺序输入:

1 输入第一个数组的个数

2 输入第一个数组的数值

3 输入第二个数组的个数

4 输入第二个数组的数值
输出输出合并之后的数组
样例输入3 1 2 5 4 -1 0 3 2
样例输出-101235
先给出比较简单的代码,利用set容器即可实现无重复元素。
using namespace std;
int main()
{
int num1,num2,temp;
set<int> iset;
cin>>num1;
for(int i=0;i<num1;i++)
{
cin>>temp;
iset.insert(temp);
}
cin>>num2;
for(int i=0;i<num2;i++)
{
cin>>temp;
iset.insert(temp);
}
for(set<int>::iterator it=iset.begin();it!=iset.end();it++)
cout<<*it;
//system("pause");
return 0;
}
第二种方法,利用vector以及泛型算法,代码如下:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int num1,num2,temp;
vector<int> ivec;
cin>>num1;
for(int i=0;i<num1;i++)
{
cin>>temp;
ivec.push_back(temp);
}
cin>>num2;
for(int i=0;i<num2;i++)
{
cin>>temp;
ivec.push_back(temp);
}
sort(ivec.begin(),ivec.end());
vector<int>::iterator end_unique=unique(ivec.begin(),ivec.end());
ivec.erase(end_unique,ivec.end());
for(vector<int>::iterator it=ivec.begin();it!=ivec.end();it++)
cout<<*it;
//system("pause");
return 0;
}


如果不允许使用使用STL,那么就乖乖排序吧,将两个数组中元素放到第三个数组中,然后排序,去重复,这部分代码等找到工作再回来补上吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: