合并两个有序升序的整数数组A和B变成一个新的数组。新数组也要有序。
样例
样例 1:
输入: A=[1], B=[1]
输出:[1,1]
样例解释: 返回合并后的数组。
样例 2:
输入: 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) {
// write your code here
int[] res = new int[A.length + B.length];
int a = 0, b = 0;
for(int i=0; i<res.length; i++){
if(a >= A.length)
res[i] = B[b++];
else if(b >= B.length)
res[i] = A[a++];
else if(A[a] < B[b])
res[i] = A[a++];
else
res[i] = B[b++];
}
return res;
}
}