这道题比较简单,就是通过从后往前复制大的就可以了。最后比较注意的就是如果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--]; } } }