您的位置:首页 > 职场人生

面试or笔试4——合并两个有序数组为一个有序数组

2017-09-06 00:43 239 查看

1 题目及要求

1.1 题目描述

合并两个有序的数组,合并之后的数组也要有序

解题思路:

类似合并链表,两个指针,分别指向一个数组的头位置,比较哪一个大就将哪一个插入新数组并把该指针后移一位

2 解答

2.1
代码

#include<iostream>
#include<vector>

using namespace std;

vector<int> merge_vectors(vector<int> &v1, vector<int> &v2){
if(v1.size()==0) return v2;
else if(v2.size()==0) return v1;
vector<int> v3;
auto it1=v1.begin();
auto it2=v2.begin();
while(it1!=v1.end()&&it2!=v2.end()){
if(*it1<*it2){
v3.push_back(*it1);
it1++;
}else{
v3.push_back(*it2);
it2++;
}
}
while(it1!=v1.end()){
v3.push_back(*it1);
it1++;
}
while(it2!=v2.end()){
v3.push_back(*it2);
it2++;
}
return v3;
}

int main(){
vector<int> v1={1, 3, 5, 7, 9};
vector<int> v2={2, 4, 6, 8, 10};
vector<int> v3=merge_vectors(v1,v2);
for(auto v:v3){
cout<<v<<' ';
}
cout<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法
相关文章推荐