题目标题:
将两个整型数组按照升序合并,并且过滤掉重复数组元素
详细描述:
接口说明
原型:

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

输入说明,按下列顺序输入:
1 输入第一个数组的个数
2 输入第一个数组的数值
3 输入第二个数组的个数

4.输入第二个数组的数值

样例输入:

3 1 2 5 4 -1 0 3 2
样例输出:
-101235

#include<iostream>
#include<vector>
#include <algorithm> using namespace std; void CombineBySort(int* pArray1,int iArray1Num,int* pArray2,int iArray2Num,int* pOutputArray,int* iOutputNum)
{
int i;
vector<int> array_tmp;
for(i=;i<iArray1Num;i++)
array_tmp.push_back(*(pArray1+i));
for(i=;i<iArray2Num;i++)
array_tmp.push_back(*(pArray2+i));
sort(array_tmp.begin(),array_tmp.end());
//array_tmp.erase(unique(array_tmp.begin(),array_tmp.end()));
vector<int>::iterator it=array_tmp.begin();
vector<int> out;
int tmp=*it;
out.push_back(tmp);
while(it!=array_tmp.end())
{
if(tmp!=*it)
{
tmp=*it;
out.push_back(tmp);
}
it++;
} *iOutputNum=out.size();
for(i=;i<*iOutputNum;i++)
*(pOutputArray+i)=out[i];
} int main()
{
int Num1,Num2,i;
cin >>Num1;
int *Array1=(int*)malloc(Num1*sizeof(int));
for(i=;i<Num1;i++)
cin>>Array1[i];
cin >>Num2;
int *Array2=(int*)malloc(Num2*sizeof(int));
for(i=;i<Num2;i++)
cin>>Array2[i]; int *outputArray=(int*)malloc((Num2+Num1)*sizeof(int));
int outNum=;
CombineBySort(Array1,Num1,Array2,Num2,outputArray,&outNum); for(i=;i<outNum;i++)
cout <<outputArray[i]; free(Array1);
free(Array2);
free(outputArray);
return ;
}

  上述代码使用的是vector容器。也可以使用set容器,见如下:

  华为OJ(整形数组合并)

  vector中去除重复的元素

  在删除相同元素时,有人使用的是STL算法 unique,但其对用的测试用例不行,如 4 1 1 1 1 3 1 1 1;

其输出结果为  111111

  故在本程序中为使用unique算法。


华为oj---合并数组的更多相关文章

  1. 华为OJ平台试题 ——数组:整形数组合并

    代码: /* * 将两个整型数组依照升序合并,而且过滤掉反复数组元素 */ #include <stdio.h> #define N 256 #define M 512 /* * 合并数组 ...

  2. PHP中通过加号合并数组

    通常,我们合并多个数组用的是array_merge()函数,其实,PHP手册中关于数组操作符的介绍给了我们更简单的方法,那就是"+"号,看看下面的例子就明白了(详细了解) 代码: ...

  3. PHP合并数组array_merge函数运算符加号与的区别

    两个的区别是:1.数组键名为数字键名时,要合并的两个数组中有同名数字KEY的时候,使用array_merge()不会覆盖掉原来的值,而使用“+”合并数组则会把最先出现的值作为最终结果返回,而把后面的数 ...

  4. 华为OJ:火车进站

    火车进站 给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号.要求以字典序排序输出火车出站的序列号. 输入描述: 有多组测试用例, ...

  5. PHP合并数组保留key值

    PHP合并数组,键值不变   尝试了好几个合并数组的函数, 但是都是把key值重置, 导致key值丢失(因为key值是要用到的) 大大说, 最好用数组的相关函数, 网上随意找了下, 还是没找到. 因为 ...

  6. PHP中使用函数array_merge()合并数组

    如果明白数组其实就是map的话,我想你就会明白array_merge为什么要这么实现了 PHP中合并数组分成两种情况 1.如果这两个数组中有相同的字符串键名: <?php header('Con ...

  7. PHP合并数组+与array_merge的区别分析

    主要区别是两个或者多个数组中如果出现相同键名,键名分为字符串或者数字,需要注意 1)键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为最终结果返回,而把后面 ...

  8. PHP 合并数组 追加数组例子

    PHP合并数组我们可以使用array_merge()函数,array_merge()函数返回一个联合的数组.所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次追加.其形式为: arra ...

  9. 在华为oj的两个月

    一次偶然的机会,我接触到华为oj平台(http://career-oj.huawei.com/exam/camLogin.jsp),当时的心情很是兴奋,于是立马注册开通,然后迫不及待地上去做题.刚开始 ...

随机推荐

  1. WEB前端资源集(一)

    做前端已经一年了,开发中换过很多开发工具,遇到bug到处求解,以及自学时到处找相关文章及教程,所以经过这么多的风波,我总结了一些对大家有帮助的网站,主题也将长期更新. 资源网站篇 CSDN:全球最大中 ...

  2. Docker - 容器编排工具 compose 之安装

    准备 首先,在使用和安装 docker compose之前,我们应该确保我们已经安装了 docker engine. 安装 官网上面有好多种安装方式,由于我们现在是在使用Docker, 个人感觉应该以 ...

  3. [iOS Animation]-CALayer 显示方式

    寄宿图 图片胜过千言万语,界面抵得上千图片 ——Ben Shneiderman 我们在第一章『图层树』中介绍了CALayer类并创建了一个简单的有蓝色背景的图层.背景颜色还好啦,但是如果它仅仅是展现了 ...

  4. Redis详细介绍

    转自:http://blog.csdn.net/eroswang/article/details/7080412 1.介绍 1.1 Redis是什么 REmote DIctionary Server( ...

  5. 51驱动LCD12864

    LCD12864与LCD1602最大的区别在于LCD12864可以显示汉字,同时也可以拿来画图;当然,作为图形显示不推荐lcd12864,推荐NOKIA5110 12864引脚基本和1602的引脚吻合 ...

  6. Mac下配置node.js环境(Mac 10.12)

    有安装就有卸载,卸载教程参考:http://www.cnblogs.com/EasonJim/p/6287141.html 一.官方下载pkg安装包 1.安装 到官网https://nodejs.or ...

  7. Struts加入拦截器后取不到页面参数

    在Struts2的demo项目中添加了一个简单的拦截器,突然发现,Action中取不到页面的参数了 这也是很蛋疼的事情,还好这个比较简单,稍微一查就发现问题: Struts2中很多的功能是用拦截器实现 ...

  8. 使用React Native来撰写跨平台的App

    React Native 是一个 JavaScript 的框架,用来撰写实时的.可原生呈现 iOS 和 Android 的应用.其是基于 React的,而 React 是 Facebook 的用于构建 ...

  9. leetcode day5

    [242]Valid Anagram: Given two strings s and t, write a function to determine if t is an anagram of s ...

  10. UVa 299 - Train Swapping

    题目大意:给n个数的一个序列,通过交换相邻的两个数使得这n个数按照从小到大的顺序排列. Inversion index problem: count how many swaps are needed ...