難度:2
解法:
歸併,如果是按照從小到達從左往右插入A數組,勢必要新增一個臨時的數組
換成從大到小從右往左,就可以省掉這部分空間
class Solution
{
public:
void merge(int A[], int m, int B[], int n)
{
int ia=m-1,ib=n-1;
int k=m+n-1;
while(ia>=0 || ib>=0)
{
if(ia>=0&&ib>=0)
{
if(A[ia]>B[ib]) A[k--]=A[ia--];
else A[k--]=B[ib--];
}
else if(ia>=0)
{
A[k--]=A[ia--];
}
else
{
A[k--]=B[ib--];
}
}
}
};