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

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. mahout第一篇-----Mahout学习路线图

    Mahout学习路线图 前言 Mahout是Hadoop家族中与众不同的一个成员,是基于一个Hadoop的机器学习和数据挖掘的分布式计算框架.Mahout是一个跨学科产品,同时也是我认为Hadoop家 ...

  2. WPF教程:附加属性

    一.附加属性的特点1.特殊的依赖属性2.用于非定义该属性的类 例如Grid面板的RowDefinition.ColumnDefinition.Canvas面板的Left.RightDockPanel面 ...

  3. python模块 ---logging模块

    摘要by crazyhacking: 与log4cxx一样,分为三个部分,logger, handler,formatter. 详细内容参考:1官网http://docs.python.org/2/h ...

  4. svn第一篇----入门指南

    摘要:trunk存放的是主代码,不修改,branch,tag,milestone均是从trunk中衍生的.branch复制trunk中代码用于开发,tag用于存放比较重要的发行版,存放release版 ...

  5. c++异常处理第四篇---不使用try catch语句,使用Loki::ScopeGuard

    转载:神奇的Loki::ScopeGuard 2011-07-05 12:52:05 分类: C/C++ 转载:http://blog.csdn.net/fangqu/article/details/ ...

  6. OPENCV图像变换-1

    图像变换是指将一幅图像变换为图像数据的另一种表现形式,例如将图像进行傅立叶变换,或者对图像进行X,Y方向的求导等,经过这些变换,可以将图像数据处理中的某些问题换一个别的角度想办法,所以图像变换是图像处 ...

  7. Android中SQLite的使用

    SQLite是Android中内置的数据库,SQLite是轻量级数据库,支持标准的SQL语法,并且支持ACID事物. 在Android中提供了SQLIteOPenHelper类,帮助我们使用SQLit ...

  8. jQuery 页面加载事件

    页面加载完成有两种事件,一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件),二是onload,指示页 面包含图片等文件在内的所有元素都加载完成.(可以说:ready 在onload ...

  9. POJ 2373 Yogurt factory

    简单DP. 这周所用的实际花费是上一周的花费+S与这周费用的较小值. #include<cstdio> #include<cstring> #include<cmath& ...

  10. NSDate详解及获取当前时间等常用操作

    NSDate类用于保存时间值,同时提供了一些方法来处理一些基于秒级别时差(Time Interval)运算和日期之间的早晚比较等. 1. 创建或初始化可用以下方法 用于创建NSDate实例的类方法有 ...