蓝桥杯 经典算法题 合并排序数组

题目:

题解:

leetcode上也有这道题一模一样。和归并排序的小过程基本一模一样,只不过因为题目要求只能将arr2中元素合并到arr1中,一种可行的方法是按元素从大到小,顺序从每个序列尾部开始操作,第一填的位置是arr1的尾部,第一个判断的是arr1中有元素的尾部和arr2中有元素的尾部,和归并一模一样的过程构造出一个单调的数组。

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
int main(){
  int a,b;
  cin>>a>>b;
  vector<int>arr1(a),arr2(a-b);
  for(int i=0;i<b;i++)cin>>arr1[i];
  for(int i=0;i<a-b;i++)cin>>arr2[i];
  int x=b-1,y=a-b-1,k=a-1;
  while(x>=0||y>=0){
    if(y<0||(x>=0&&arr1[x]>=arr2[y])){
      arr1[k--]=arr1[x--];
    }else {
      arr1[k--]=arr2[y--];
    }
  }
  for(auto x:arr1){
    cout<<x<<" ";
  }
  return 0;
}
相关推荐
浒畔居13 小时前
C++中的状态模式实战
开发语言·c++·算法
naruto_lnq13 小时前
C++中的状态模式
开发语言·c++·算法
近津薪荼14 小时前
优选算法——双指针4(单调性)
c++·学习·算法
IUGEI15 小时前
从原理到落地:DAG在大数据SLA中的应用
java·大数据·数据结构·后端·算法
云深麋鹿15 小时前
五.排序笔记
c语言·数据结构·算法·排序算法
程序员三藏20 小时前
接口测试及常用接口测试工具总结
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
spcier21 小时前
图论拓扑排序-Kahn 算法
算法·图论
知星小度S21 小时前
动态规划(一)——思想入门
算法·动态规划
ysa05103021 小时前
动态规划-逆向
c++·笔记·算法
燃于AC之乐21 小时前
我的算法修炼之路--7—— 手撕多重背包、贪心+差分,DFS,从数学建模到路径DP
c++·算法·数学建模·深度优先·动态规划(多重背包)·贪心 + 差分