网易有道2017内推编程题:构造队列 [python]
来源:互联网 发布:足彩大数据分析哪里看 编辑:程序博客网 时间:2024/06/04 19:19
'''
[编程题] 构造队列
时间限制:1秒
空间限制:32768K
小明同学把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的数,我们先取出n放入列表一中,此时列表一为[n]。
接着取出n-1,放入列表一的最前面,此时列表一为[n-1, n]
然后pop出列表一最后的元素放入列表一的最前面,此时列表已为[n, n-1]
继续取出n-2,放入列表一的最前面,此时列表一为[n-2, n, n-1]
pop出列表一最后的元素放入列表一的最前面,此时列表已为[n-1, n-2, n]
一直重复以上步骤直至取出1为止
不过直接用list做效率低,我用的是deque数据类型,效率可以提高一个数量级,思路类似上面的描述
'''
'''
代码运行结果:
答案正确:恭喜!您提交的程序通过了所有的测试用例
[编程题] 构造队列
时间限制:1秒
空间限制:32768K
小明同学把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的数,我们先取出n放入列表一中,此时列表一为[n]。
接着取出n-1,放入列表一的最前面,此时列表一为[n-1, n]
然后pop出列表一最后的元素放入列表一的最前面,此时列表已为[n, n-1]
继续取出n-2,放入列表一的最前面,此时列表一为[n-2, n, n-1]
pop出列表一最后的元素放入列表一的最前面,此时列表已为[n-1, n-2, n]
一直重复以上步骤直至取出1为止
不过直接用list做效率低,我用的是deque数据类型,效率可以提高一个数量级,思路类似上面的描述
'''
'''
代码运行结果:
答案正确:恭喜!您提交的程序通过了所有的测试用例
'''
from collections import dequeT = int(input())for x in range(T): n = int(input()) if n != 1: array = deque([n]) for i in range(n-1, 0, -1): d1 = array.popleft() array.append(i) array.append(d1) results = map(str, list(reversed(array))) print(' '.join(results)) else: print(1)
阅读全文
0 0
- 网易有道2017内推编程题:构造队列 [python]
- 网易有道2017内推编程题 构造队列(模拟)
- 网易有道2017内推编程题-网易[编程题]构造队列
- 构造队列-网易有道2017年内推编程题
- 网易有道2017内推编程题 队列操作(映射)
- 网易有道2017内推编程题:洗牌 [python]
- 2017有道内推编程题——构造队列
- 网易有道2017内推编程题
- 网易有道2017内推编程题
- 网易有道2017内推编程题
- 网易有道2017内推编程题
- 2017网易有道编程题:构造队列
- 网易有道2017内推编程题第一题
- 洗牌-网易有道2017内推编程题
- 网易有道2017内推编程题-Java实现
- 网易有道2017内推编程题 洗牌(模拟)
- 2017网易有道内推笔试编程题1:洗牌
- 网易有道2017内推编程题2
- 归并排序
- 基于NFS v4版本搭建NFS服务器
- RecyclerView嵌套RecyclerView 条目自动上滚的bug
- vue2 npm run build 打包出来的dist 文件夹资源引用加载错误
- Softmax函数与交叉熵
- 网易有道2017内推编程题:构造队列 [python]
- Mac下查看某个接口被占用的情况
- 设置VMWare桥接模式静态IP
- Intellij IDEA--can't use subversion command line client : svn
- 读《哈默手稿》
- [转] Git中.gitignore的配置语法
- DataNode启动流程源码分析
- Spring源码解析之标签的解析上篇
- Oracle Spacial(空间数据库)GEOMETRY示例