[编程题] 构造队列
来源:互联网 发布:淘宝 笑涵阁 猫腻 编辑:程序博客网 时间:2024/06/07 19:55
小明同学把1到n这n个数字按照一定的顺序放入了一个队列Q中。现在他对队列Q执行了如下程序:
while(!Q.empty()) //队列不空,执行循环{ int x=Q.front(); //取出当前队头的值x Q.pop(); //弹出当前队头 Q.push(x); //把x放入队尾 x = Q.front(); //取出这时候队头的值 printf("%d\n",x); //输出x Q.pop(); //弹出这时候的队头}
做取出队头的值操作的时候,并不弹出当前队头。
小明同学发现,这段程序恰好按顺序输出了1,2,3,…,n。现在小明想让你构造出原始的队列,你能做到吗?[注:原题样例第三行5有错,应该为3,以下已修正]
输入描述:
第一行一个整数T(T ≤ 100)表示数据组数,每组数据输入一个数n(1 ≤ n ≤ 100000),输入的所有n之和不超过200000。
输出描述:
对于每组数据,输出一行,表示原始的队列。数字之间用一个空格隔开,不要在行末输出多余的空格.
输入例子1:
4
1
2
3
10
输出例子1:
1
2 1
2 1 3
8 1 6 2 10 3 7 4 9 5
解题思路
可以先构建一个空的数组,长度为n。按照1,2,3,…,n的顺序进行填充,填充的位置是每间隔一个空白处,空白处即尚未被填充过的数组中的位置,到末尾之后,再返回数组头部,直到所有位置被填充上元素。这里使用的linkedlist的数据结构,适合删除操作。
import java.util.LinkedList;import java.util.ListIterator;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int T = sc.nextInt(); for (int i = 0; i < T; i++) { int num = sc.nextInt(); int[] data = new int[num]; LinkedList<Integer> list = new LinkedList<>(); for (int x = 0; x < num; x++) list.add(x); int val = 1; ListIterator<Integer> it = list.listIterator(); while (list.size() != 0) { if (it.hasNext()) { it.next(); } else { it = list.listIterator(); it.next(); } int index = 0; if (it.hasNext()) { index = it.next(); it.remove(); } else { it = list.listIterator(); index = it.next(); it.remove(); } data[index] = val++; } for (int j = 0; j < data.length - 1; j++) System.out.print(data[j]+" "); System.out.println(data[data.length - 1]); } }}
阅读全文
0 0
- [编程题] 构造队列
- [编程题] 构造队列
- 2017网易有道编程题:构造队列
- 构造队列-网易有道2017年内推编程题
- 网易有道2017内推编程题 构造队列(模拟)
- 2017有道内推编程题——构造队列
- 网易有道2017内推编程题:构造队列 [python]
- 网易有道笔试编程之队列构造
- 网易有道2017内推编程题-网易[编程题]构造队列
- 构造队列
- 构造队列
- 牛客网解题-在线编程-2017网易有道_构造队列
- [编程题] 构造回文
- [编程题]构造回文
- [编程题] 疯狂队列
- [编程题] 疯狂队列
- [编程题] 疯狂队列
- 栈-构造队列(网易题)
- K-Means++
- 关于"UnityEditor" namespace not found的问题的个人解决方案
- Photon Server环境搭建
- kaifyou Android 7.0 UICC 分析
- 通过GitHub Pages创建个人主页
- [编程题] 构造队列
- 【每周牧函】我的异性交往界限(王怡牧师)
- Charles抓包(Android手机)
- IK Expression 简单用
- Spring HtmlUtils用法
- java.lang.SecurityException: Permission Denial: starting Intent
- 备忘录
- Ubuntu 16.04搭建LAMP开发环境
- CSDN-Markdown编辑器用法