当前位置:网站首页>字符串替换相关题目(合并数组)
字符串替换相关题目(合并数组)
2022-04-22 07:43:00 【黑子的ball】
1、题目描述:
有两个排序数组 A1 和 A2,内存在 A1 的末尾有足够多的空余空间容纳 A2。请实现一个函数,把 A2 中的所有数字插入到 A1 中,并且所有的数字是排序的。
2、测试用例
3、解答思路
思路一:从头到尾扫描字符串,每次碰到空格字符的时候进行替换。但是由于是把1个字符替换成3个字符,就必须要把空格后面所有的字符后移2字节。
思路二:在合并两个数组(包括字符串)时,如果从前往后赋值每个数字(或字符),则需要重复移动数字(或字符)多次,那么我们可以考虑从后往前复制,这样就能减少移动的次数,从而提高效率。
复杂度分析:时间复杂度O(N^2)
代码如下:
#include <stdio.h>
#include <string.h>
void Unite_Arry(int *arrA, int *arrB, int len1, int len2)
{
//创建一个新的数组,用来存放重组后的元素
int arrC[30] = {
0};
//arrC数组的长度
int len3 = len1 + len2;
int len = len3;
//入参判断
if(NULL == arrA || NULL == arrB || (len1-1) < 0 || (len2-1) < 0)
{
printf("The input parameter error!\n");
return;
}
//开始数组重组
while((len1-1) >= 0 && (len2-1) >= 0)
{
if(arrA[len1-1] >= arrB[len2-1])
{
arrC[lem3-1] = arrA[len1-1];
len1--;
len3--;
}
else
{
arrC[len3-1] = arrB[len2-1];
len2--;
len3--;
}
}
//当arrA数组的元素比arrB数组的元素多的时候,直接复制多出的元素到arrC的最前面
if(len1 > 0)
{
memcpy(arrC, arrA, len1*sizeof(int));
}
//当arrB数组的元素比arrA数组的元素多的时候,直接复制多出的元素到arrC的最前面
if(len2 > 0)
{
memcpy(arrC, arrB, len2*sizeof(int));
}
//输出重组的数组
int i;
printf("Reorganized arrC is:");
for(i=0;i<len;i++)
{
printf("%d ", arrC[i]);
}
printf("\n");
}
int main()
{
int arrA[] = {
1,3,6,9,10};
int arrB[] = {
0,1,2,12};
int n,m;
printf("Original arrA is:");
for(n=0; n<sizeof(arrA)/sizeof(int); n++)
{
printf("%d ", arrA[n]);
}
printf("\n");
printf("Original arrB is:");
for(m=0; m<sizeof(arrB)/sizeof(int); m++)
{
printf("%d ", arrB[m]);
}
printf("\n");
Unite_Arry((int*)arrA, (int*)arrB, sizeof(arrA)/sizeof(int), sizeof(arrB)/sizeof(int));
return 0;
}
版权声明
本文为[黑子的ball]所创,转载请带上原文链接,感谢
https://blog.csdn.net/shark_93/article/details/119605573
边栏推荐
- 617. 合并二叉树(Easy)
- shell笔记
- SmartTabLayout 简介
- 地图裁剪器,可以将图片裁剪成瓦片数据,主要用途是将高清卫星图像裁剪成瓦片图,可以做离线地图的开发,基于墨卡托坐标
- Simple use of fresco - simpledraweeview
- MySQL in-depth study (3-2): other database tuning strategies
- kubernetes—pod详解
- Handler related source code analysis
- [跟着官方文档学JUnit5][二][WritingTests][学习笔记]
- The collection palette in LabVIEW 2012 is imported into LabVIEW 2013
猜你喜欢

Flutter 判断网络可用性

Machine learning notes - Mathematics in principal component analysis

Simple use of fresco - simpledraweeview

sonic云真机入门教程

What do you know about the well-known public DNS servers in China

Machine learning notes - determinant

MaterialApp

Nacos Foundation (3): open API configuration management test and close Nacos service

国内云安全市场突破百亿元,未来发展趋势如何?

Flutter judges network availability
随机推荐
shell脚本中ps -ef查询进程PID一直返回异常
winform中网络开发
PWM output of STM32 to steering gear sg90
Mapbox设置官方地图语言为中文
Cesium加载地形数据(cesiumlab制作地形数据),从源数据到地形服务
leaflet、cesium加载百度地图,加载自定义样式百度地图
shell脚本学习笔记——正则表达式
机器学习笔记 - 行列式
Typescript学习指南
94. 二叉树的中序遍历(Easy)
MATLAB安装产品选择,如何选择需要安装的产品
静态库修改初探
qt designer 跳转,布局,样式
关闭电脑端口
重启redis
【论文阅读】【3d目标检测】Voxel Set Transformer: A Set-to-Set Approach to 3D Object Detection from Point Clouds
函数指针和指针函数
cesium鼠标拾取要素,并判断要素类别
Winsock编程接口实验:实现ipconfig
Flutter ListView 加载更多