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

合并两个有序的数组

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

一、暴力法

class Solution {
public:
    void merge(int A[], int m, int B[], int n) {
        for(int i = m; i < m + n; i++){
            A[i] = B[i-m];
        }
        sort(A, A+m+n);
    }
};

二、从后归并

class Solution {
public:
    void merge(int A[], int m, int B[], int n) {
        int k = m + n - 1;
        int a_r = m - 1;
        int b_r = n - 1;
        while(a_r >= 0 && b_r >= 0){
            if(A[a_r] > B[b_r])    A[k--] = A[a_r--];
            else                   A[k--] = B[b_r--];
        }
        while(a_r >= 0){
            A[k--] = A[a_r--];
        }
        while(b_r >= 0){
            A[k--] = B[b_r--];
        }
    }
};
全部评论

相关推荐

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