这个题目和LeetCode上的某道题比较类似,不过记得LeetCode是根据输入的1…n求转换之后的结果,当时涉及到偶数位的取模判断
这道题直接使用Java中的Deque(Double ended queue) API就很简单,构造一个双向队列
(1)每次从1…n中逆序取出有一个数字,放在队列头部
(2)然后取出队列尾部的元素,放回队列头部
package Interview2017.No1;
import java.util.Scanner;
import java.util.Deque;
import java.util.ArrayDeque;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int cnt = in.nextInt();
int[] input = new int[cnt];
for(int i=0; i < cnt; i++){ //获取输入
input[i] = in.nextInt();
}
for(int i=0; i < cnt; i++){ //处理逻辑
int n = input[i];
//Queue<Integer> queue = new LinkedList<Integer>();
Deque<Integer> queue = new ArrayDeque<Integer>();
while(n > 0){
queue.addFirst(n);
int tail = queue.removeLast();
queue.addFirst(tail);
n--;
}
int size = queue.size();
for(int j=0; j < size; j++){
if(j != size-1)
System.out.print(queue.getFirst() + " ");
else
System.out.println(queue.getFirst());
queue.removeFirst();
}
}
}
}