leetcode第一刷_Merge Sorted Array

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

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


posted @ 2015-12-18 10:37  phlsheji  阅读(155)  评论(0编辑  收藏  举报