题目
给出两个有序的整数数组A和B,请将数组B合并到数组A中,变成一个有序的数组
注意:
可以假设A数组有足够的空间存放B数组的元素,A和B中初始的元素数目分别为m和n
思路
1.直接从后往前赋值,因为A的长度至少有m+n;所以直接从A[m+n-1]位置处赋值。
2.注意出口 以及m为0的情况
代码
public class Solution {
public void merge(int A[], int m, int B[], int n) {
//长度一致 可以从后往前
if(m==0){
for(int k=0;k<B.length;k++)
A[k]=B[k];
}
else{
int i=m-1;
int j=n-1;
int s=m+n-1;
while(j>=0&&i>=0){
if(A[i]>B[j])
A[s--]=A[i--];
else
A[s--]=B[j--];
}
if(i==-1){
for(;j>=0;j--)
A[j]=B[j];
}
}
}
}
总结
注意 m=0时 直接将B赋值到A中