從後往前進行merge, 時間複雜度在O(m + n)
class Solution {
public:
void merge(int A[], int m, int B[], int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(n == 0) return;
int len = m + n;
int index = len - 1;
int i = m - 1, j = n - 1;
while(i >= 0 && j >= 0)
{
if(A[i] < B[j])
{
A[index--] = B[j--];
}
else
{
A[index--] = A[i--];
}
}
while(j >= 0)
{
A[index--] = B[j--];
}
}
};