网易2018校招内推编程题 操作序列

简介: 小易有一个长度为n的整数序列,a_1,...,a_n。然后考虑在一个空序列b上进行n次以下操作: 1、将a_i放入b序列的末尾 2、逆置b序列 小易需要你计算输出操作n次之后的b序列。 输入描述: 输入包括两行,第一行包括一个整数n(2 ≤ n ≤ 2*10^5),即序列的长度。
 * 问题:
小易有一个长度为n的整数序列,a_1,...,a_n。然后考虑在一个空序列b上进行n次以下操作:
1、将a_i放入b序列的末尾
2、逆置b序列
小易需要你计算输出操作n次之后的b序列。 
输入描述:
输入包括两行,第一行包括一个整数n(2 ≤ n ≤ 2*10^5),即序列的长度。
第二行包括n个整数a_i(1 ≤ a_i ≤ 10^9),即序列a中的每个整数,以空格分割。


输出描述:
在一行中输出操作n次之后的b序列,以空格分割,行末无空格。

输入例子1:
4
1 2 3 4

输出例子1:
4 2 1 3

* 思路:
 * 序列a:0 1 2 3 4 5 6 7 8 9   长度为10
 * 序列b的变化过程:
 *  一、 0
 *  二、 1 0
 *  三、 2 0 1
 *  四、 3 1 0 2
 *  五、 4 2 0 1 3
 *  六、 5 3 1 0 2 4
 *  七、 6 4 2 0 1 3 5
 *  八、 7 5 3 1 0 2 4 6
 *  九、 8 6 4 2 0 1 3 5 7
 *  十、 9 7 5 3 1 0 2 4 6 8
 *  
 *  很明显,若经过奇数次的变化,a序列的偶数序号是以递减的顺序排在b序列的左侧,a序列的奇数序号是以递增的顺序排列在b序列的右侧。
 *  反之,若经过偶数次的变化,a序列的奇数数序号是以递减的顺序排在b序列的左侧,a序列的偶数序号是以递增的顺序排列在b序列的右侧。
 *  只需要将偶数序号和奇数序号分开生各成一个数组,按照递减或递增的规律先后输出即可。

JAVA程序:

public class OperationSequence {

	public static void main(String[] args) {
		int[] oddArr;
		int[] evenArr;
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		if(n%2==0){
			oddArr=new int[n/2];
			evenArr=new int[n/2];
			for (int i = 0; i < n; i++) {
				int sub=i/2;
				if(i%2==0){
					evenArr[sub]=scanner.nextInt();
				}else{
					oddArr[sub]=scanner.nextInt();
				}
			}
			
			for (int i = oddArr.length-1; i >=0; i--) {
				System.out.print(oddArr[i]+" ");
			}
			for (int i = 0; i < evenArr.length-1; i++) {
				System.out.print(evenArr[i]+" ");
			}
			System.out.println(evenArr[evenArr.length-1]);
		}else{
			oddArr=new int[n/2];
			evenArr=new int[n/2+1];
			for (int i = 0; i < n; i++) {
				int sub=i/2;
				if(i%2==0){
					evenArr[sub]=scanner.nextInt();
				}else{
					oddArr[sub]=scanner.nextInt();
				}
			}
			
			for (int i = evenArr.length-1; i >=0; i--) {
				System.out.print(evenArr[i]+" ");
			}
			for (int i = 0; i < oddArr.length-1; i++) {
				System.out.print(oddArr[i]+" ");
			}
			System.out.println(oddArr[oddArr.length-1]);
		}
		
	}

}


相关文章
|
8天前
|
算法 NoSQL Java
懵逼!阿里一面就被虐了,幸获内推华为技术四面,成功拿到offer
上个月,哥们从某小厂离职,转投阿里云,简历优秀,很顺利地拿到了面试通知,但之后的进展却让哥们怀疑人生了,或者说让哥们懵逼的是,面试阿里云居然第一面就被吊打?让哥们开始怀疑自己,是不是这些年工作下来,自己没有一丁点的进步呢?
|
7月前
|
人工智能 算法 Java
拼多多2019春招编程题答案
拼多多2019春招编程题答案
|
11月前
|
Java
第五期:字符串的一些有意思的操作
第五期:字符串的一些有意思的操作
67 0
|
测试技术
【面试题】又一批新鲜出炉的软测面试题及答案
【面试题】又一批新鲜出炉的软测面试题及答案
|
缓存 移动开发 JavaScript
5.17-5.25 大厂一轮面试题目全记录(腾讯PCG、WXG、虾皮、字节)
本瓜前段时间(2020.05.17 ~ 2020.05.25)可能由于机缘巧合?获得了几家大厂的面试资格。遂去试了试水(不该裸面呀),发现自己还是火候不够。
|
设计模式 前端开发 网络协议
我是怎么倒在美团第三轮面试之下的
说实话,之前我从来没想过能有大厂会给我机会让我去面试,一个专科生,不是科班出身,这些硬性条件好像都没有一个符合的,但是却获得了美团的面试机会。很庆幸自己获得那次机会,也让我深刻体会到了面试大厂,到底需要你达到什么样子的水平。
我是怎么倒在美团第三轮面试之下的
|
分布式计算 大数据 Hadoop
【合集】想要轻松玩转阿里云?这里干货请收下!
在这里你可以寻找你想要的所有干货,带你一图了解阿里云!
257 0
【合集】想要轻松玩转阿里云?这里干货请收下!
|
SQL XML 安全
拼搏百天我要日站——思路
第一步做的就是信息收集,正所谓知己知彼百战百胜,我们根据网站URL可以查出一系列关于该网站的信息。通过URL我们可以查到该网站的IP、该网站操作系统、脚本语言、在该服务器上是否还有其他网站等等一些列的信息。更多的关于信息收集,我在另一篇文章中很详细的介绍了信息收集需要收集哪些信息,以及信息收集过程中需要用到的工具,传送门——> 渗透测试之信息收集
115 0
|
机器学习/深度学习 人工智能 分布式计算
同学,你有一份来自支付宝AI学姐的面试锦囊待查收
这里有创造未来的技术,这里有蚂蚁最丰富的场景,这里有挑战也有机遇,还有为你助力的师兄师姐。此时此刻,非你莫属!期待你们的到来!
2662 0
同学,你有一份来自支付宝AI学姐的面试锦囊待查收