Merge two given sorted integer array A and B into a new sorted integer array.
与上一道类似
class Solution {
/**
* @param A and B: sorted integer array A and B.
* @return: A new sorted integer array
*/
public int[] mergeSortedArray(int[] A, int[] B) {
int[] res = new int[A.length + B.length];
int indexA = 0, indexB = 0;
int indexR = 0;
while(indexA < A.length && indexB < B.length) {
if(A[indexA] > B[indexB]) {
res[indexR++] = B[indexB++];
}
else {
res[indexR++] = A[indexA++];
}
}
while(indexA < A.length) res[indexR++] = A[indexA++];
while(indexB < B.length) res[indexR++] = B[indexB++];
return res;
}
}
优化:如果一个数组很长,一个数组很短,这种情况下,首先拷贝长数组到结果数组中,然后对短数组的每个值在长数组中找到相应位置插入。时间复杂度仍为O(n)。继续优化的话,可以在寻找插入位置时采用二分查找法等