64. 合并排序数组 II
合并两个排序的整数数组A和B变成一个新的数组。
样例
给出 A = [1, 2, 3, empty, empty]
, B = [4, 5]
合并之后 A 将变成 [1,2,3,4,5]
看的出来A后面empty的地方是留给AB中较大的数的,问题就在于怎么选出大的数去填这个空
既然AB已经是有序的了,各自大的数都在后面,那么就逆序遍历,谁大就往里面填。
1 void mergeSortedArray(int A[], int m, int B[], int n) { 2 // write your code here 3 int a_back=m-1, b_back=n-1, ab_back=m+n-1; 4 for(int i=ab_back;i>=0;i--){ 5 if(A[a_back]<B[b_back]){ 6 A[i]=B[b_back]; 7 b_back--; 8 } 9 else{ 10 A[i]=A[a_back]; 11 a_back--; 12 } 13 } 14 }