题解 | #合并两个有序的数组#
合并两个有序的数组
http://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665
class Solution {
public:
void merge(int A[], int m, int B[], int n) {
int new_n = m+n-1;
从后往前放置数字,最大的放在最后面,依次往前
if(n==0) return;
if(m==0){
for(int a=0;a<n;a++){
A[a] = B[a];
}
return;
}
int i=m-1,j=n-1;
int flag=0;
while(i>=0&&j>=0){
if(A[i]>=B[j]){
A[new_n] = A[i];
new_n--;
i--;
}else{
A[new_n] = B[j];
new_n--;
j--;
}
if(i<0){
flag=1;
break;
}
if(j<0){
flag=2;
break;
}
}
if(flag==1){
for(j;j>=0;j--){
A[new_n] = B[j];
new_n--;
}
}
}
};