构造队列-网易有道2017年内推编程题
来源:互联网 发布:按摩垫推荐 知乎 编辑:程序博客网 时间:2024/06/04 19:04
小明同学把1到n这n个数字按照一定的顺序放入了一个队列Q中。现在他对队列Q执行了如下程序:
while(!Q.empty()) //队列不空,执行循环
{
int x=Q.front(); //取出当前队头的值xQ.pop(); //弹出当前队头Q.push(x); //把x放入队尾x = Q.front(); //取出这时候队头的值printf("%d\n",x); //输出xQ.pop(); //弹出这时候的队头
}
做取出队头的值操作的时候,并不弹出当前队头。
小明同学发现,这段程序恰好按顺序输出了1,2,3,…,n。现在小明想让你构造出原始的队列,你能做到吗?[注:原题样例第三行5有错,应该为3,以下已修正]
分析:在这里可以逆向来考虑,从n开始每次在数组中的首位置增加一个元素,然后将最后面的元素移动到数组的首位置,依次下去,当把1放置完成后就得到了原来的队列序列。
import java.util.ArrayList;import java.util.Scanner;/** * Created by Administrator on 2016/8/18. */public class Main{ public static void main(String[]args) { Scanner s=new Scanner(System.in); int T=s.nextInt(); for (int i = 0; i <T ; i++) { int n=s.nextInt(); ArrayList<Integer>list=new ArrayList<>(); int num=n; while (num!=0) { list.add(0,num); int e= list.remove(list.size()-1); list.add(0,e); num--; } if (n>0) { for (int j = 0; j <n-1 ; j++) { System.out.print(list.get(j)+" "); } System.out.println(list.get(n-1)); } } s.close(); }}
1 0
- 构造队列-网易有道2017年内推编程题
- 网易有道2017内推编程题 构造队列(模拟)
- 网易有道2017内推编程题:构造队列 [python]
- 网易有道2017内推编程题-网易[编程题]构造队列
- 2017网易有道编程题:构造队列
- 网易有道2017内推编程题 队列操作(映射)
- 2017有道内推编程题——构造队列
- 网易有道2017内推编程题
- 网易有道2017内推编程题
- 网易有道2017内推编程题
- 网易有道2017内推编程题
- 牛客网解题-在线编程-2017网易有道_构造队列
- 网易有道笔试编程之队列构造
- 网易有道2017内推编程题第一题
- 洗牌-网易有道2017内推编程题
- 网易有道2017内推编程题-Java实现
- 网易有道2017内推编程题 洗牌(模拟)
- 2017网易有道内推笔试编程题1:洗牌
- 文件的创建及写入
- label 字体换色
- js操作cookie或url导致在java端编码问题
- Android开发笔记(一百一十九)工具栏ToolBar
- 黑盒测试(二)
- 构造队列-网易有道2017年内推编程题
- ReadWriteLock
- 通知
- UITableView基本属性
- SDUTACM 数据结构实验之查找七:线性之哈希表
- c# log类
- Hadoop SequenceFile
- AAANetty入门:开发第一个Netty应用程序
- f4 rtc例子2