您的位置:首页 > 其它

网易笔试题:数组转置问题

2017-08-24 21:15 246 查看
问题:

小易有一个长度为n的整数序列,a_1,...,a_n。然后考虑在一个空序列b上进行n次以下操作:
1、将a_i放入b序列的末尾
2、逆置b序列
小易需要你计算输出操作n次之后的b序列。 

思路:输入4个数,分别为1,2,3,4;查找规律。

(1)输入1,结果为1

(2)输入2,队列1,2;转置后结果为2,1

(3)输入3,队列3,1,2;此时不需要转置,因为结果3,1,2

(4)输入4,队列3,1,2,4;此时需要转置,结果为4,2,1,3

根据以上规律,可以看出,每当输入一个数时,需要将此数放在对头或对尾(n-1个放在对头,n个放在对尾),一个需要转置,另一个不需要转置。

import java.util.Deque;
import java.util.LinkedList;
import java.util.Scanner;

import javax.sound.midi.Sequence;

public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] num=new int
;
boolean convert=false;
for(int i=0;i<n;i++){
num[i]=sc.nextInt();
}
Deque<Integer> que=new LinkedList<Integer>();
for(int k=0;k<n;k++){
if(convert){
que.addLast(num[k]);
}else{
que.addFirst(num[k]);
}
convert=!convert;
}

if(convert){
while(que.size()!=1){
System.out.print(que.pollFirst()+" ");
}
System.out.print(que.pollFirst());
}else{
while(que.size()!=1){
System.out.print(que.pollLast()+" ");
}
System.out.print(que.pollLast());
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 笔试