网易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