阅读352 返回首页    go 阿里云 go 技术社区[云栖]


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

 * 问题:
小易有一个长度为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

 *  一、 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


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

}


最后更新:2017-09-08 09:02:45

  上一篇:go  Java面试题——Spring
  下一篇:go  网易2018校招内推编程题 独立的小易