水题,只是思想还是实用的。
当然能够新建出一个数组。比較着拷贝过去。可是没有必要啊亲。想想为什么用源数组会麻烦,由于确定了前面的数。为了后面的数字不被覆盖,要依次往后移,转念一想,先确定后面的数字。就不用操心会覆盖的问题了。像不像杨辉三角形中仅仅要求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; } } };