博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
华为训练题:整形数组合并
阅读量:4092 次
发布时间:2019-05-25

本文共 2382 字,大约阅读时间需要 7 分钟。

描述
 
题目标题: 将两个整型数组按照升序合并,并且过滤掉重复数组元素 详细描述: 接口说明 原型: 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 输入第二个数组的数值

输出

输出合并之后的数组

样例输入 31 2 54-1 0 3 2
样例输出 -101235
#include 
using namespace std;void CombineBySort(int* pArray1, int iArray1Num, int* pArray2, int iArray2Num, int* pOutputArray, int* iOutputNum);int main(){ int n, m; int i, j; //int a[100],b[100],c[200]; //int *num; cin >> n; int *a = new int[n]; for(i=0; i
> a[i]; } cin >> m; int *b = new int[m]; for(j=0; j
> b[j]; } //for(i=0; i
pArray1[j+1]) { temp = pArray1[j]; pArray1[j] = pArray1[j+1]; pArray1[j+1] = temp; } } } /* for(i=0; i< iArray1Num; i++) { cout << pArray1[i]; } cout << endl; */ for(i=0; i
pArray2[j+1]) { temp = pArray2[j]; pArray2[j] = pArray2[j+1]; pArray2[j+1] = temp; } } } /* for(i=0; i< iArray2Num; i++) { cout << pArray2[i]; } cout << endl; */ for(i=0,j=0,k=0; i+j < iArray1Num+iArray2Num-1; )//合并 { if(pArray1[i] == fOut)//如果当前数值与前一个已确定输出值相同,则跳过 { i++; //continue; } else if(pArray2[j] == fOut)//如果当前数值与前一个已确定输出值相同,则跳过 { j++; //continue; } else// { if(pArray1[i] < pArray2[j])//如果第一个数组的值比第二个数组的值小 { pOutputArray[k++] = pArray1[i];//则把第一个数组的值放入输出数组,并序号加一 i++; } else if(pArray1[i] > pArray2[j] ) { pOutputArray[k++] = pArray2[j]; j++; } else if(pArray1[i] == pArray2[j]) { pOutputArray[k++] = pArray2[j]; i++; j++; } fOut = pOutputArray[k-1];//更新 前一个输出值fOut } if(i == iArray1Num)//如果第一个数组都已经遍历完毕 { for(j; j< iArray2Num; j++)//则把第二个数组的剩余的数字放入输出输入 { if(pArray2[j] == fOut)//判断是否有重值 { j++; continue; } else { pOutputArray[k++] = pArray2[j]; fOut = pOutputArray[k-1]; } } break; } else if(j == iArray2Num)//同理,如果第二个数组都已经遍历完毕 { for(i; i< iArray1Num; i++) { if(pArray1[i] == fOut) { i++; continue; } else { pOutputArray[k++] = pArray1[i]; fOut = pOutputArray[k-1]; } } break; } } *iOutputNum = k;//输出数组的大小}

转载地址:http://bvnii.baihongyu.com/

你可能感兴趣的文章
Immutable.js 以及在 react+redux 项目中的实践
查看>>
Vue2.0全家桶仿腾讯课堂(移动端)
查看>>
React+Redux系列教程
查看>>
19 个 JavaScript 常用的简写技术
查看>>
微信小程序:支付系列专辑(开发指南+精品Demo)
查看>>
iOS应用间相互跳转
查看>>
iOS开发之支付宝集成
查看>>
iOS开发 支付之银联支付集成
查看>>
iOS开发支付集成之微信支付
查看>>
浅谈JavaScript--声明提升
查看>>
React非嵌套组件通信
查看>>
Websocket 使用指南
查看>>
浏览器兼容性问题解决方案 · 总结
查看>>
一个很棒的Flutter学习资源列表
查看>>
为什么你应该放弃React老的Context API用新的Context API
查看>>
Flutter 布局控件完结篇
查看>>
Koa2初体验
查看>>
Koa 2 初体验(二)
查看>>
Koa2框架原理解析和实现
查看>>
vue源码系列文章good
查看>>