水题,只是思想还是实用的。

当然能够新建出一个数组。比較着拷贝过去。可是没有必要啊亲。想想为什么用源数组会麻烦,由于确定了前面的数。为了后面的数字不被覆盖,要依次往后移,转念一想,先确定后面的数字。就不用操心会覆盖的问题了。像不像杨辉三角形中仅仅要求O(N)空间时的思想,好多好多样例。

class Solution {
public:
void merge(int A[], int m, int B[], int n) {
int i=m-1, j = n-1, k = m+n-1;
while(i>=0&&j>=0){
if(A[i]<B[j]){
A[k] = B[j];
--j;
}else{
A[k] = A[i];
--i;
}
--k;
}
while(j>=0){
A[k] = B[j];
--k;
--j;
}
}
};