牛客题霸 [合并两个有序的数组] C++题解/答案

题目描述

给出两个有序的整数数组 和 ,请将数组 合并到数组 中,变成一个有序的数组
注意:
可以假设 数组有足够的空间存放 数组的元素, 和 中初始的元素数目分别为 和

题目描述

给出两个有序的整数数组A 和B ,请将数组B 合并到数组A 中,变成一个有序的数组
注意:
可以假设 A数组有足够的空间存放B 数组的元素, A和B 中初始的元素数目分别为 m和n

题解:

将A和B从最后一位开始比,然后存入A中(下标从第m+n-1倒着开始)。当有一个用完后,将另一个数组内的元素全部按顺序存入A中

代码:

class Solution {
   
public:
    void merge(int A[], int m, int B[], int n) {
   
        int i = m - 1;
        int j = n - 1;
        int k = m + n - 1;//
        while (i >= 0 && j >= 0)
        {
   
            if (A[i] > B[j])
            {
   
                A[k] = A[i];
                i--;
                k--;
            }
            else
            {
   
                A[k] = B[j];
                j--;
                k--;
            }
        }
        while (i >= 0) A[k--] = A[i--];
        while (j >= 0) A[k--] = B[j--];
    }
};