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

合并两个有序的数组

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数组的对应位置了
        }
    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 11:31
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 12:10
点赞 评论 收藏
分享
零OFFER战士:另一个版本查看图片
点赞 评论 收藏
分享
05-30 12:03
山西大学 C++
offer来了我跪着...:不是骗子,等到测评那一步就知道为啥这么高工资了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务