合并排序数组
合并两个排序的整数数组A和B变成一个新的数组。
给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]
我的做法:
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 heres
int sizeA = A.size();
int sizeB = B.size();
vector<int> output;
int posA = 0;
int posB = 0;
for(int i=posA; i<sizeA; i++)
{
for(int j=posB; j<sizeB; j++)
{
if(posA >= sizeA)
break;
if(B[j] == A[i])
{
output.push_back(A[i]);
output.push_back(B[j]);
posA = i + 1;
posB = j + 1;
i++;
}
else if(B[j]>A[i])
{
output.push_back(A[i]);
posA = i + 1;
posB = j;
break;
}
else if(B[j]<A[i])
{
output.push_back(B[j]);
posA = i;
posB = j + 1;
}
}
}
if(posA+1 > sizeA)
{
for(int i=posB; i<sizeB; i++)
{
output.push_back(B[i]);
}
}
if(posB+1 > sizeB)
{
for(int i=posA; i<sizeA; i++)
{
output.push_back(A[i]);
}
}
return output;
}
};
更为简便的做法:
参见http://blog.csdn.net/lyy_hit/article/details/49511839