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

合并两个有序的数组

https://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665?tpId=196&&tqId=37061&rp=1&ru=/ta/job-code-total&qru=/ta/job-code-total/question-ranking

合并两个有序的数组

描述

给出一个整数数组 和有序的整数数组 ,请将数组 合并到数组 中,变成一个有序的升序数组

注意:

1.可以假设 数组有足够的空间存放 数组的元素, 和 中初始的元素数目分别为 和 ,的数组空间大小为 +
2.不要返回合并的数组,返回是空的,将数组 的数据合并到里面就好了
3.数组在[0,m-1]的范围也是有序的

例1:

A: [1,2,3,0,0,0],m=3
B: [2,5,6],n=3
合并过后A为:
A: [1,2,2,3,5,6]

思路

运用辅助数组C,将A,B数组按顺序放入C,再进行深拷贝给数组A。

    public void merge(int A[], int m, int B[], int n) {
        //安全性分析
        if (m+n==0) {
            return;
        }
        int indexA = 0;
        int indexB = 0;
        int indexC = 0;
        int[] C = new int[n+m];
        while (indexA<m && indexB<n) {
            if (A[indexA]<=B[indexB]) {
                C[indexC] = A[indexA];
                indexA++;
                indexC++;
            }else {
                C[indexC] = B[indexB];
                indexB++;
                indexC++;
            }
        }
        while (indexA==m && indexB<n) {
            C[indexC] = B[indexB];
            indexB++;
            indexC++;
        }
        while (indexA<m && indexB==n) {
            C[indexC] = A[indexA];
            indexA++;
            indexC++;
        }
        A = C.clone();
    }
全部评论

相关推荐

点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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