是在A数组的原基础上直接进行merge。方法是从后往前merge(数组长度为m+n),依次取最大的放上去。
不要担心A数组的原有元素被覆盖掉,因为分析代码,那个被覆盖的元素应该已经出现在了数组后面。
AC代码:
class Solution {
public:
void merge(int A[], int m, int B[], int n) {
int i = m-1;
int j = n-1;
int index = m+n-1;
while(i>=0 && j>=0)
{
A[index--] = A[i]>B[j] ? A[i--] : B[j--];
}
while(j>=0)
{
A[index--] = B[j--];
}
}
};