合并两个有序数组

合并两个有序的数组

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

使用原数组空间,防止影响前面未合并元素,从后面开始遍历。双指针分别指向两个数组最后元素,比较合并,合并的指针前移,直到其中一个数组合并完成,再直接合并另一个数组。

class Solution {
public:

    void merge(int A[], int m, int B[], int n) {
        int a = m;
        int b = n;
        int c = m + n - 1;

        while(a && b){
            if(A[a-1] > B[b-1]){
                A[c] = A[a-1];
                c--;
                a--;
            }else{
                A[c] = B[b-1];
                c--;
                b--;
            }
        }

        while(a){
            A[c] = A[a-1];
            c--;
            a--;
        }

        while(b){
            A[c] = B[b-1];
            c--;
            b--;
        }
    }
};
全部评论

相关推荐

牛马人的牛马人生:一开始看成了网吧
点赞 评论 收藏
分享
牛客41406533...:回答他在课上学,一辈子待在学校的老教授用三十年前的祖传PPT一字一句的讲解,使用谭浩强红皮书作为教材在devc++里面敲出a+++++a的瞬间爆出114514个编译错误来学这样才显得专业
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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