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

合并两个有序的数组

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];
            }
        }

    }
};
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务