这道题比较简单,就是通过从后往前复制大的就可以了。最后比较注意的就是如果B还没复制完要记得接着复制。
import java.util.Arrays; public class Solution{ public static void main(String[] args){
int[] a = {2,4,5,0,0,0};
int[] b = {1,3,6}; merge(a,b,3,3);
System.out.println(Arrays.toString(a));
} public static void merge(int[] a, int[] b,int len1, int len2){
int lastA = len1 - 1;
int lastB = len2 - 1;
int flag = len1 + len2 - 1;
while(lastA >= 0 && lastB >= 0){
if(a[lastA] > b[lastB]){
a[flag--] = a[lastA--];
}
else{
a[flag--] = b[lastB--];
}
}
if(lastB >= 0){
a[flag--] = b[lastB--];
}
}
}