描述
合并两个排序的整数数组A和B变成一个新的数组。
样例
给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]
解决方案
归并排序中使用到了排序数组的合并,所以该问题的解决方案已经很成熟,本文参照《Algorithm 4th Edition》中归并排序一节里的代码给出实现:
class Solution {
public:
/**
* @param A and B: sorted integer array A and B.
* @return: A new sorted integer array
*/
vector<int> mergeSortedArray(vector<int> &A, vector<int> &B) {
// write your code here
vector<int> res(A.size() + B.size());
auto itA = A.cbegin();
auto itB = B.cbegin();
for(auto itR = res.begin(); itR != res.end(); ++itR) {
if(itA == A.cend()) *itR = *(itB++);
else if(itB == B.cend()) *itR = *(itA++);
else if(*itB < *itA) *itR = *(itB++);
else *itR = *(itA++);
}
return res;
}
};