题目描述
给出两个有序的整数数组 和 ,请将数组 合并到数组 中,变成一个有序的数组
注意:
可以假设 数组有足够的空间存放 数组的元素, 和 中初始的元素数目分别为 和
题目描述
给出两个有序的整数数组A 和B ,请将数组B 合并到数组A 中,变成一个有序的数组
注意:
可以假设 A数组有足够的空间存放B 数组的元素, A和B 中初始的元素数目分别为 m和n
题解:
将A和B从最后一位开始比,然后存入A中(下标从第m+n-1倒着开始)。当有一个用完后,将另一个数组内的元素全部按顺序存入A中
代码:
class Solution {
public:
void merge(int A[], int m, int B[], int n) {
int i = m - 1;
int j = n - 1;
int k = m + n - 1;//
while (i >= 0 && j >= 0)
{
if (A[i] > B[j])
{
A[k] = A[i];
i--;
k--;
}
else
{
A[k] = B[j];
j--;
k--;
}
}
while (i >= 0) A[k--] = A[i--];
while (j >= 0) A[k--] = B[j--];
}
};