合并两个排序的整数数组A和B变成一个新的数组。
样例
给出A = [1, 2, 3, empty, empty] B = [4,5]
合并之后A将变成[1,2,3,4,5]
注意
你可以假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B中的元素。
解题思路:这道题如果我们从A[0]开始进行排序的话,必须要创建一个新的数组,但是比较有趣的是我们转换思路从A[m+n]开始往回走,既简单又省空间。
1 class Solution { 2 /** 3 * @param A: sorted integer array A which has m elements, 4 * but size of A is m+n 5 * @param B: sorted integer array B which has n elements 6 * @return: void 7 */ 8 public void mergeSortedArray(int[] A, int m, int[] B, int n) { 9 // write your code here 10 int k=m+n-1; 11 int i = m-1; 12 int j = n-1; 13 while(i>=0&&j>=0){ 14 if(A[i]>B[j]){ 15 A[k]=A[i]; 16 k--; 17 i--; 18 }else{ 19 A[k]=B[j]; 20 k--; 21 j--; 22 } 23 } 24 while(j>=0){ 25 A[k]=B[j]; 26 k--; 27 j--; 28 } 29 } 30 }