描述
合并两个排序的整数数组A和B变成一个新的数组。
样例
给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]
挑战
你能否优化你的算法,如果其中一个数组很大而另一个数组很小?
代码
public class Solution {
/*
* @param A: sorted integer array A
* @param B: sorted integer array B
* @return: A new sorted integer array
*/
public int[] mergeSortedArray(int[] A, int[] B) {
if (A == null || B == null) {
return null;
}
int[] results = new int[A.length + B.length];
int i = 0, j = 0, index = 0;
while (i < A.length && j < B.length) {
if (A[i] < B[j]) {
results[index] = A[i];
i++;
// A[i] == B[j]情况分两次记录,先记录B[j],j 变化 i 不变再记录A[i]
} else {
results[index] = B[j];
j++;
}
index++;
}
// 用while循环,不能用if
while (i < A.length) {
results[index] = A[i];
i++;
index++;
}
while (j < B.length) {
results[index] = B[j];
j++;
index++;
}
return results;
}
}