做法

  • 先确定合并数组后数组的大小
    从后往前赋值,依次比较A和B数组较大的值赋值过去
    如果A、B数组中其中一个数组已经全部赋值过去,那么另一个数组剩余值从后往前依次赋值即可

时间复杂度

代码

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