352
技術社區[雲棲]
網易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