当前位置:网站首页>【BM87 合并两个有序的数组】
【BM87 合并两个有序的数组】
2022-08-11 07:13:00 【安河桥畔】
合并两个有序的数组
题目来源
牛客网: 合并两个有序的数组
题目描述
给出一个有序的整数数组 A 和有序的整数数组 B ,请将数组 B 合并到数组 A 中,变成一个有序的升序数组
数据范围:|A_i| <=100∣A , |B_i| <= 100∣
注意:
1.保证 A 数组有足够的空间存放 B 数组的元素, A 和 B 中初始的元素数目分别为 m 和 n,A的数组空间大小为 m+n
2.不要返回合并的数组,将数组 B 的数据合并到 A 里面就好了,且后台会自动将合并后的数组 A 的内容打印出来,所以也不需要自己打印
3. A 数组在[0,m-1]的范围也是有序的
示例1
输入
[4,5,6],[1,2,3]
返回
[1,2,3,4,5,6]
说明
A数组为[4,5,6],B数组为[1,2,3],后台程序会预先将A扩容为[4,5,6,0,0,0],B还是为[1,2,3],m=3,n=3,传入到函数merge里面,然后请同学完成merge函数,将B的数据合并A里面,最后后台程序输出A数组
示例2
输入
[1,2,3],[2,5,6]
输出
[1,2,2,3,5,6]
思路分析
- A数组的容量能够放下两个数组所有的元素,所以可以不用定义新的数组
- 从后往前遍历向A数组中对应位置,放入A、B数组比较得到的较大值,从后往前遍历可以避免A数组前面的数据被覆盖
- 如果最后B数组有剩余元素没有放入A数组,则按顺序将剩下的元素放入A,若A有剩余保持不变即可
代码展示
class Solution {
public:
void merge(int A[], int m, int B[], int n) {
int i = m + n - 1;
m--;
n--;
while (n >= 0 && m >= 0)
{
//将大的数放入A数组最后的位置
if (A[m] >= B[n])
{
A[i] = A[m];
m--;
}
else
{
A[i] = B[n];
n--;
}
i--;
}
//循环结束后如果B数组由剩余,则将剩下的按顺序放入A数组中
while (n >= 0)
{
A[i] = B[n];
i--;
n--;
}
}
};
总结
这道题是面试中的常考题,核心思想就是从后向前遍历数组,避免数据被覆盖。如果从前往后遍历就需要定义一个数组,会造成空间的浪费。
边栏推荐
- The easiest trick to support quick renaming of various files
- tf.cast(),reduce_min(),reduce_max()
- Four operations in TF
- How Unity programmers can improve their abilities
- 1.2-误差来源
- tf中自减操作;tf.assign_sub()
- 1076 Wifi密码 (15 分)
- 测试用例很难?有手就行
- 分布式锁-Redission - 缓存一致性解决
- Redis source code-String: Redis String command, Redis String storage principle, three encoding types of Redis string, Redis String SDS source code analysis, Redis String application scenarios
猜你喜欢
随机推荐
TF中的四则运算
The easiest trick to support quick renaming of various files
CSDN21天学习挑战赛——封装(06)
1061 判断题 (15 分)
1061 True or False (15 points)
easyrecovery15数据恢复软件收费吗?功能强大吗?
oracle19c does not support real-time synchronization parameters, do you guys have any good solutions?
动态代理学习
Redis source code-String: Redis String command, Redis String storage principle, three encoding types of Redis string, Redis String SDS source code analysis, Redis String application scenarios
Four states of Activity
查找最新人员工资和上上次人员工资的变动情况
Decrement operation in tf; tf.assign_sub()
3.1-Classification-probabilistic generative model
【LaTex-错误和异常】\verb ended by end of line.原因是因为闭合边界符没有在\verb命令所属行中出现;\verb命令的正确和错误用法、verbatim环境的用法
伦敦银规则有哪些?
TF generates (feature, label) set through feature and label, tf.data.Dataset.from_tensor_slices
4.1-支持向量机
记录一些遇见的bug——Lombok和Mapstruct的冲突导致,A component required a bean of type ‘com.XXX.controller.converter.
3GPP LTE/NR信道模型
语音信号处理:预处理【预加重、分帧、加窗】