题目要求:合并两个排序好的数组
2.1 version one
完全采用C++内置函数,不用考虑任何算法,运行通过
vector<int> mergeSortedArray(vector<int> &A, vector<int> &B) {
// write your code here
vector<int>nums_out;
nums_out.insert(nums_out.end(),A.begin(),A.end());
nums_out.insert(nums_out.end(),B.begin(),B.end());
sort(nums_out.begin(),nums_out.end());
return nums_out;
}
2.2 version two
分别使用两个迭代器指向待排序的数组,然后依次比较大小.直到出现有一个数组的指针已经指向数组末尾,知识后只需要将另一个数组中剩下的元素全部拷贝到剩余位置中即可。具体代码如下(运行通过):
vector<int> mergeSortedArray(vector<int> &A, vector<int> &B) {
// write your code here
vector<int>nums_out;
vector<int>::iterator it1;
vector<int>::iterator it2;
it1 = A.begin();
it2 = B.begin();
while(it1 != A.end() && it2 != B.end())
{
if(*it1 <= *it2)
{
nums_out.push_back(*it1);
it1++;
}
else
{
nums_out.push_back(*it2);
it2++;
}
}
if(it1 == A.end())
{
while(it2 != B.end())
{
nums_out.push_back(*it2);
it2++;
}
}
else
{
while(it1 != A.end())
{
nums_out.push_back(*it1);
it1++;
}
}
return nums_out;
}