合并两个排序的整数数组A和B变成一个新的数组。
样例
给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]
挑战
你能否优化你的算法,如果其中一个数组很大而另一个数组很小?
C++
class Solution {
public:
/**
* @param A: sorted integer array A
* @param B: sorted integer array B
* @return: A new sorted integer array
*/
vector<int> mergeSortedArray(vector<int> &A, vector<int> &B) {
// write your code here
vector<int> result(A.size()+B.size());
int i = 0 ,j = 0;
int k = 0;
while(i<A.size()&&j<B.size())
{
if(A[i]<B[j])
{
result[k] = A[i];
k++;
i++;
}
else if(A[i]>B[j])
{
result[k] = B[j];
k++;
j++;
}
else
{
result[k] = A[i];
k++;
i++;
result[k] = B[j];
k++;
j++;
}
}
while(i<A.size())
{
result[k] = A[i];
k++;
i++;
}
while(j<B.size())
{
result[k] = B[j];
k++;
j++;
}
return result;
}
};
Py3:
class Solution {
public:
/**
* @param A: sorted integer array A
* @param B: sorted integer array B
* @return: A new sorted integer array
*/
vector<int> mergeSortedArray(vector<int> &A, vector<int> &B) {
// write your code here
vector<int> result(A.size()+B.size());
int i = 0 ,j = 0;
int k = 0;
while(i<A.size()&&j<B.size())
{
if(A[i]<B[j])
{
result[k] = A[i];
k++;
i++;
}
else if(A[i]>B[j])
{
result[k] = B[j];
k++;
j++;
}
else
{
result[k] = A[i];
k++;
i++;
result[k] = B[j];
k++;
j++;
}
}
while(i<A.size())
{
result[k] = A[i];
k++;
i++;
}
while(j<B.size())
{
result[k] = B[j];
k++;
j++;
}
return result;
}
};