网易有道2017内推编程题 洗牌(python)


Posted in Python onJune 19, 2019

本文实例为大家分享了网易有道2017内推编程题:洗牌,供大家参考,具体内容如下

'''
[编程题] 洗牌
时间限制:1秒
空间限制:32768K
洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程。 现在需要洗2n张牌,
从上到下依次是第1张,第2张,第3张一直到第2n张。首先,我们把这2n张牌分成两堆,
左手拿着第1张到第n张(上半堆),右手拿着第n+1张到第2n张(下半堆)。
接着就开始洗牌的过程,先放下右手的最后一张牌,再放下左手的最后一张牌,
接着放下右手的倒数第二张牌,再放下左手的倒数第二张牌,直到最后放下左手的第一张牌。
接着把牌合并起来就可以了。 例如有6张牌,最开始牌的序列是1,2,3,4,5,6。首先分成两组,
左手拿着1,2,3;右手拿着4,5,6。在洗牌过程中按顺序放下了6,3,5,2,4,1。
把这六张牌再次合成一组牌之后,我们按照从上往下的顺序看这组牌,就变成了序列1,4,2,5,3,6。 
现在给出一个原始牌组,请输出这副牌洗牌k次之后从上往下的序列。 

输入描述:

第一行一个数T(T ≤ 100),表示数据组数。对于每组数据,第一行两个数n,k(1 ≤ n,k ≤ 100),
接下来一行有2n个数a1,a2,...,a2n(1 ≤ ai ≤ 1000000000)。表示原始牌组从上到下的序列。

输出描述:

对于每组数据,输出一行,最终的序列。数字之间用空格隔开,不要在行末输出多余的空格。

输入例子1:

3 3 1 1 2 3 4 5 6 3 2 1 2 3 4 5 6 2 2 1 1 1 1

输出例子1:

1 4 2 5 3 6 1 5 4 3 2 6 1 1 1 1

'''

'''
解题思路:散列表
  这道题是有道的内推题,所以考点和字典数据集有关,这道题目考的是散列表,如果把新牌放入数组一中,
  洗过的牌放入数组二中,那么数组一个数组二之间各个元素的位置存在一定的映射关系。即:
  数组一中在j号位置的元素在数组二中的位置是index = (2j % len(数组二)),
  如果该位置已经有元素,则index自动加一,搜索下一个位置,直到找到空位置。
  这道题目的数据比较简单,其实没必要用散列表做,依靠找规律或者切片就能把做出来,
  很多人用的是切片,使用[::2]和[1::2]找出数列二中的所有偶数位和奇数位,把数列一的前n个数和后n个数放进去即可。
  但我个人觉得python切片的效率不高,于是换了找规律的方法,如果 2j < 2n , 则index=2j,否则index = index % (2*n) + 1,
  如此循环k次。使用这种方法每次都直接找到某张牌在k次洗牌后的位置,避免了大量的切片操作,
  也避免了大量在数组中寻找元素并赋值的操作。
  (Ps,这倒题目的输入和输出比较坑爹)
'''

'''
代码运行结果:
答案正确:恭喜!您提交的程序通过了所有的测试用例
'''

T = int(input())
 
array_list = []
n, k = [int(each) for each in input().split()]
for x in range(T):
 digs = [int(each) for each in input().split()]
 array = digs[0:2*n]
 results = [None] * (2 * n)
 for j in range(2*n):
 index = j
 for i in range(k):
  index = 2 * index
  if index >= 2 * n:
  index = index % (2*n) + 1
 results[index] = array[j]
 n, k = digs[-2:]
 results = map(str, results)
 print(' '.join(results))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之Import 模块
Oct 13 Python
Python中的pygal安装和绘制直方图代码分享
Dec 08 Python
python保存文件方法小结
Jul 27 Python
Django中的forms组件实例详解
Nov 08 Python
python中使用 xlwt 操作excel的常见方法与问题
Jan 13 Python
Django中自定义admin Xadmin的实现代码
Aug 09 Python
Numpy对数组的操作:创建、变形(升降维等)、计算、取值、复制、分割、合并
Aug 28 Python
Python通过正则库爬取淘宝商品信息代码实例
Mar 02 Python
PyQt5实现简单的计算器
May 30 Python
pycharm中leetcode插件使用图文详解
Dec 07 Python
使用Python webdriver图书馆抢座自动预约的正确方法
Mar 04 Python
Pygame Time时间控制的具体使用详解
Nov 17 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
Jun 19 #Python
网易2016研发工程师编程题 奖学金(python)
Jun 19 #Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
Jun 19 #Python
python调用动态链接库的基本过程详解
Jun 19 #Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
Jun 19 #Python
华为校园招聘上机笔试题 扑克牌大小(python)
Apr 22 #Python
PyQt5实现从主窗口打开子窗口的方法
Jun 19 #Python
You might like
PHP下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
php微信公众平台示例代码分析(二)
2016/12/06 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
2019/05/13 PHP
Laravel 模型关联基础教程详解
2019/09/17 PHP
070823更新的一个[消息提示框]组件 兼容ie7
2007/08/29 Javascript
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
详解react服务端渲染(同构)的方法
2017/09/21 Javascript
基于BootStrap的文本编辑器组件Summernote
2017/10/27 Javascript
ES6解构赋值实例详解
2017/10/31 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
2018/04/26 jQuery
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
详解基于 Node.js 的轻量级云函数功能实现
2019/07/08 Javascript
js实现抽奖功能
2020/11/24 Javascript
JavaScript实现前端倒计时效果
2021/02/09 Javascript
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
[02:02]2018DOTA2亚洲邀请赛Mineski赛前采访
2018/04/04 DOTA
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
python使用Berkeley DB数据库实例
2014/09/26 Python
微信跳一跳python辅助软件思路及图像识别源码解析
2018/01/04 Python
浅谈python正则的常用方法 覆盖范围70%以上
2018/03/14 Python
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
Python常见排序操作示例【字典、列表、指定元素等】
2018/08/15 Python
python 对key为时间的dict排序方法
2018/10/17 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
Django--权限Permissions的例子
2019/08/28 Python
Python实现生成密码字典的方法示例
2019/09/02 Python
Python实现代码统计工具
2019/09/19 Python
Python 生成短8位唯一id实战教程
2021/01/13 Python
使用HTML5 Canvas为图片填充颜色和纹理的教程
2016/03/21 HTML / CSS
保险公司开门红口号
2014/06/21 职场文书
班子成员四风问题自我剖析材料
2014/09/29 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers
Go语言空白表示符_的实例用法
2021/07/04 Golang