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

合并两个有序的数组

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

class Solution {
public:
    /***
    归并排序:
    双指针从A和B的m、n尾部遍历
    比较A和B的m、n尾部的值,将较大值赋给A整体数组的尾部,指针左移
    注意特殊情况处理:A的尾指针已遍历结束,B尾指针还未结束。
    ***/
    void merge(int A[], int m, int B[], int n) {
        if(m<1){
            for(int i=0;i<n;i++){
                A[i] = B[i];
            }
            return;
        }
        if(n<1){
            return;
        }

        while(m>0 && n>0){
            if(A[m-1]>B[n-1]){
                A[m+n-1] = A[m-1];
                m-=1;
            }else{
                A[m+n-1] = B[n-1];
                n-=1;
            }
        }
        if(n>0){
            for(int i=0;i<n;i++){
                A[i] = B[i];
            }
        }

    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 15:58
投个小米提前批试试水,先投一个岗位看看形势,不行就再沉淀一下投第二个岗位,莫辜负
Java抽象带篮子:我嘞个骚刚,已经开始研发6g了吗
投递小米集团等公司7个岗位
点赞 评论 收藏
分享
05-27 14:57
西北大学 golang
强大的社畜在走神:27届真不用急,可以搞点项目、竞赛再沉淀沉淀,我大二的时候还在天天打游戏呢
投递华为等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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