网易有道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实现在Linux系统下更改当前进程运行用户
Feb 04 Python
手把手教你用python抢票回家过年(代码简单)
Jan 21 Python
python实现音乐下载器
Apr 15 Python
Python 3.7新功能之dataclass装饰器详解
Apr 21 Python
python的格式化输出(format,%)实例详解
Jun 01 Python
解决python xlrd无法读取excel文件的问题
Dec 25 Python
使用python脚本自动创建pip.ini配置文件代码实例
Sep 20 Python
python用类实现文章敏感词的过滤方法示例
Oct 27 Python
Python基于gevent实现高并发代码实例
May 15 Python
Python StringIO及BytesIO包使用方法解析
Jun 15 Python
如何用Anaconda搭建虚拟环境并创建Django项目
Aug 02 Python
Python爬虫如何破解JS加密的Cookie
Nov 19 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修改session_id示例代码
2014/01/08 PHP
PHP curl 获取响应的状态码的方法
2014/01/13 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
apache中为php 设置虚拟目录
2014/12/17 PHP
php有道翻译api调用方法实例
2014/12/22 PHP
PHP 500报错的快速解决方法
2016/12/14 PHP
jquery 选取方法都有哪些
2014/05/18 Javascript
JS替换字符串中字符即替换全部而不是第一个
2014/06/04 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
2014/06/27 Javascript
javascript动态生成树形菜单的方法
2015/11/14 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
2016/05/17 Javascript
详解jQuery简单的表格应用
2016/12/16 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
使用socket.io制做简易WEB聊天室
2018/01/02 Javascript
开发一个Parcel-vue脚手架工具(详细步骤)
2018/09/22 Javascript
详解js中let与var声明变量的区别
2020/04/05 Javascript
JavaScript跳出循环的三种方法(break, return, continue)
2019/07/30 Javascript
node.js文件操作系统实例详解
2019/11/05 Javascript
微信小程序拖拽排序列表的示例代码
2020/07/08 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
Element-ui upload上传文件限制的解决方法
2021/01/22 Javascript
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
对Python _取log的几种方式小结
2019/07/25 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
django实现支付宝支付实例讲解
2019/10/17 Python
CSS3属性选择符介绍
2008/10/17 HTML / CSS
CSS3中媒体查询结合rem布局适配手机屏幕
2019/06/10 HTML / CSS
美国帽子俱乐部商店:Hat Club
2019/07/05 全球购物
英国在线滑雪板和冲浪商店:The Board Basement
2020/01/11 全球购物
八年级物理教学反思
2014/01/19 职场文书
教师党的群众路线对照检查材料
2014/09/24 职场文书
乡镇团代会开幕词
2016/03/04 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang
Pytorch反向传播中的细节-计算梯度时的默认累加操作
2021/06/05 Python