资讯专栏INFORMATION COLUMN

【算法】算法测试题3:操作序列

sunny5541 / 3003人阅读

摘要:题目描述链接来源牛客网小易有一个长度为的整数序列。然后考虑在一个空序列上进行次以下操作将放入序列的末尾逆置序列小易需要你计算输出操作次之后的序列。输出描述在一行中输出操作次之后的序列以空格分割行末无空格。

题目描述

链接:https://www.nowcoder.com/ques...
来源:牛客网

小易有一个长度为n的整数序列,a_1,...,a_n。然后考虑在一个空序列b上进行n次以下操作:
1、将a_i放入b序列的末尾
2、逆置b序列
小易需要你计算输出操作n次之后的b序列。

输入描述

</>复制代码

  1. 输入包括两行,第一行包括一个整数n(2 ≤ n ≤ 2*10^5),即序列的长度。
  2. 第二行包括n个整数a_i(1 ≤ a_i ≤ 10^9),即序列a中的每个整数,以空格分割。
输出描述

</>复制代码

  1. 在一行中输出操作n次之后的b序列,以空格分割,行末无空格。
示例

</>复制代码

  1. 输入
  2. 4
  3. 1 2 3 4
  4. 输出
  5. 4 2 1 3
解题思路

倒序遍历数组a,将a的元素放入b数组中。
放入b数组的位置顺序为:第一个,倒数第一个,第二个,倒数第二个,第三个,倒数第三个....
正序下标用start变量表示,倒序下标用end变量表示
用flag来标识应该使用正序下标还是倒序下标,正序下标和倒序下标交替使用

1.先计算出a[i]应该放入b中的位置下标p
2.a[i]放入b中对应的位置b[p]中
3.转1

tips:

</>复制代码

  1. 格式化输出:
  2. ans=b.join(" ")
  3. 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
JavaScript代码

</>复制代码

  1. let n = parseInt(readline());
  2. let line = readline().split(" ");
  3. let arr = new Array();
  4. for(let i = 0; i < n; i++){
  5. arr[i] = parseInt(line[i]);
  6. }
  7. let b = new Array(n);
  8. let flag = true;
  9. let start = 0, end = n-1;
  10. let p = start;
  11. for(let i = n-1; i >= 0; i--){
  12. //计算a[i]插入b中的位置p
  13. if(flag){
  14. p = start;
  15. start++;
  16. flag = false;
  17. }else{
  18. p = end;
  19. end--;
  20. flag = true;
  21. }
  22. b[p] = arr[i];
  23. }
  24. //格式化输出
  25. //let str = "";
  26. //for(let i = 0; i < n-1; i++){
  27. //str+=b[i];
  28. //str+=" ";
  29. //}
  30. //str+=b[n-1];
  31. //print(str);
  32. //使用join格式化输出
  33. let ans = b.join(" ");
  34. print(ans);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/97191.html

相关文章

  • JavaScript 数据结构与算法之美 - 冒泡排序、插入排序、选择排序

    摘要:之所以把冒泡排序选择排序插入排序放在一起比较,是因为它们的平均时间复杂度都为。其中,冒泡排序就是原地排序算法。所以冒泡排序是稳定的排序算法。选择排序思路选择排序算法的实现思路有点类似插入排序,也分已排序区间和未排序区间。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 1. 前言 算法为王。 想学好前端,先练好内功,...

    canger 评论0 收藏0
  • JavaScript 数据结构与算法之美 - 十大经典排序算法汇总

    摘要:笔者写的数据结构与算法之美系列用的语言是,旨在入门数据结构与算法和方便以后复习。这应该是目前较为简单的十大经典排序算法的文章讲解了吧。比如原本在的前面,而,排序之后,在的后面十大经典排序算法冒泡排序思想冒泡排序只会操作相邻的两个数据。 showImg(https://segmentfault.com/img/bVbvHet); 1. 前言 算法为王。想学好前端,先练好内功,内功不行,就...

    zsy888 评论0 收藏0
  • 算法算法试题5:牛牛的数列:最长连续子序列

    摘要:题目描述链接来源牛客网牛牛现在有一个个数组成的数列牛牛现在想取一个连续的子序列并且这个子序列还必须得满足最多只改变一个数就可以使得这个连续的子序列是一个严格上升的子序列牛牛想知道这个连续子序列最长的长度是多少。 题目描述 链接:https://www.nowcoder.com/ques...来源:牛客网 牛牛现在有一个n个数组成的数列,牛牛现在想取一个连续的子序列,并且这个子序列还必须...

    MRZYD 评论0 收藏0
  • 「数据游戏」:使用 ARIMA 算法预测三日后招商银行收盘价

    摘要:作者天琼,数据游戏优胜队伍成员介绍本文整理记录了参与的一次小型数据分析竞赛数据游戏,竞赛目标是预测年月日股闭市时招商银行的股价。日发现的数据有错误,需要手工矫正日该数据恢复正常。而函数,是对样本外的数据进行预测。 作者:天琼,「数据游戏」优胜队伍成员 介绍 本文整理记录了参与的一次小型数据分析竞赛「数据游戏」,竞赛目标是预测2019年5月15日A股闭市时招商银行600036的股价。 主...

    xcc3641 评论0 收藏0
  • 「数据游戏」:使用 ARIMA 算法预测三日后招商银行收盘价

    摘要:作者天琼,数据游戏优胜队伍成员介绍本文整理记录了参与的一次小型数据分析竞赛数据游戏,竞赛目标是预测年月日股闭市时招商银行的股价。日发现的数据有错误,需要手工矫正日该数据恢复正常。而函数,是对样本外的数据进行预测。 作者:天琼,「数据游戏」优胜队伍成员 介绍 本文整理记录了参与的一次小型数据分析竞赛「数据游戏」,竞赛目标是预测2019年5月15日A股闭市时招商银行600036的股价。 主...

    Nino 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<