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

27 篇文章 0 订阅

题目及要求

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;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值