閱讀352 返回首頁    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校招內推編程題 獨立的小易