You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are m andn respectively.
这道题的思路和剑指offer上第2章中关于字符串操作的面试题4替换空格相似。如果从前面开始比较会不断地移动后面的数组元素,因此借助空格替换思想,定义三个指针来移动。
这道题虽然在leetcode上提交成功,但是仍然不知道自己去怎么测试。比如事先不知道应该给A定义多大的数组。今晚问了问同学,说可以先给A定义一个很长的数组,然后A数组输入的时候用Scanner 依次输入A[i];
好吧,这个问题先留着,把我的代码放在下面
public void merge(int A[], int m, int B[], int n) { int q = m+n-1; int p = m-1; int r = n-1; while(p>=0&&r>=0){ if(A[p]>=B[r]){ A[q] = A[p]; q--; p--; } else{ A[q] = B[r]; q--; r--; } } while(p>=0){ A[q] = A[p]; q--; p--; } while(q>=0){ A[q] = B[r]; q--; r--; } }