Given two sorted integer arrays A and B, merge B into A as one sorted array.
Notice
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 and n respectively.
Example
解题思路:
A = [1, 2, 3, empty, empty]
, B = [4,
5]
After merge, A will be filled as [1, 2, 3, 4, 5]
1、new一个大小为[m+n]的数组C,它的作用是用来暂时存放A与B的合并的结果。merge过程与归并排序的归并过程相似,大概就是用两个索引i,j分别指向A,B数组的下标,依次比较A[i]与B[j]的大小,将两者中更小的元素放进C[k]中,再移动相应索引到下一个比较元素...
class Solution {
public:
/*
* @param A: sorted integer array A which has m elements, but size of A is m+n
* @param m: An integer
* @param B: sorted integer array B which has n elements
* @param n: An integer
* @return: nothing
*/
void mergeSortedArray(int A[], int m, int B[], int n)
{
// write your code here
int * C = new int [m + n];
int i = 0;
int j = 0;
int k = 0;
while (k < m+n)
{
if (j >= n)
C[k++] = A[i++];
else if (i >= m)
C[k++] = B[j++];
else if (A[i] < B[j])
C[k++] = A[i++];
else
C[k++] = B[j++];
}
//将C中的元素依次赋值给A
for (int p = 0; p < (m + n); p++)
{
A[p] = C[p];
}
delete[] C;
}
};