2 pointers approach O(m+n)


#1
int m=B.size();
    int n=A.size();
    for(int i=0;i<m;i++)
        A.push_back(-1);
    int i=n-1,j=m-1,cnt=A.size()-1;
    while(i>=0 && j>=0){
        if(B[j]>=A[i]){
            A[cnt]=B[j];
            j--;
        }
        else{
            A[cnt]=A[i];
            i--;
        }
        cnt--;
    }
    while(i>=0){
        A[cnt]=A[i];
        cnt--;i--;
    }
    while(j>=0){
        A[cnt]=B[j];
        cnt--;j--;
    }