题解 | #合并两个有序的数组#

合并两个有序的数组

http://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665

从后往前遍历,查看当前A和B数字中哪个最后面的数比较大,就把它放在A数组的对应位置(第m+n个位置)

public:
    void merge(int A[], int m, int B[], int n) {
        for(int i=m+n-1;i>=0;i--){
            if(m>0&&n>0){
                if(A[m-1]>B[n-1]){
                    A[i]=A[m-1];
                    m--;
                }else{
                    A[i]=B[n-1];
                    n--;
                }
            }
            else if(n>0) A[i]=B[n-1],n--;
            //A有剩余不用管,因为已经在A数组的对应位置了
        }
    }
};
全部评论

相关推荐

微风不断:兄弟,你把四旋翼都做出来了那个挺难的吧
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务