网易有道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 专题一 函数的基础知识
Mar 16 Python
浅谈用VSCode写python的正确姿势
Dec 16 Python
Python实现的维尼吉亚密码算法示例
Apr 12 Python
python3解析库BeautifulSoup4的安装配置与基本用法
Jun 26 Python
opencv python 2D直方图的示例代码
Jul 20 Python
在python中实现将一张图片剪切成四份的方法
Dec 05 Python
python 视频逐帧保存为图片的完整实例
Dec 10 Python
selenium+python配置chrome浏览器的选项的实现
Mar 18 Python
django自定义非主键自增字段类型详解(auto increment field)
Mar 30 Python
python中元组的用法整理
Jun 15 Python
python 使用多线程创建一个Buffer缓存器的实现思路
Jul 02 Python
Python模拟登录和登录跳转的参考示例
Oct 30 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
字符串长度函数strlen和mb_strlen的区别示例介绍
2014/09/09 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
PHP如何使用JWT做Api接口身份认证的实现
2020/02/03 PHP
PHP字符串和十六进制如何实现互相转换
2020/07/16 PHP
javascript 基础篇2 数据类型,语句,函数
2012/03/14 Javascript
javascript基础知识大全 便于大家学习,也便于我自己查看
2012/08/17 Javascript
js判读浏览器是否支持html5的canvas的代码
2013/11/18 Javascript
jquery中append()与appendto()用法分析
2014/11/14 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
js简单判断flash是否加载完成的方法
2016/06/21 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
2016/06/24 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
关于axios如何全局注册浅析
2018/01/14 Javascript
详解VueJs中的V-bind指令
2018/05/03 Javascript
让Vue也可以使用Redux的方法
2018/05/23 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
Vue单文件组件开发实现过程详解
2020/07/30 Javascript
解决vue自定义指令导致的内存泄漏问题
2020/08/04 Javascript
Python中文编码那些事
2014/06/25 Python
浅谈python import引入不同路径下的模块
2017/07/11 Python
使用pycharm生成代码模板的实例
2018/05/23 Python
Python读取excel中的图片完美解决方法
2018/07/27 Python
python中的不可变数据类型与可变数据类型详解
2018/09/16 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
2020/05/18 Python
使用CSS3中的calc()属性来以算式表达尺寸数值
2016/06/06 HTML / CSS
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
Mio Skincare英国官网:身体紧致及孕期身体护理
2018/08/19 全球购物
芝加哥牛排公司:Chicago Steak Company
2018/10/31 全球购物
护士在校生自荐信
2014/02/01 职场文书
带薪年假请假条
2014/02/04 职场文书
酒店采购员岗位职责
2014/03/14 职场文书
银行爱岗敬业演讲稿
2014/05/05 职场文书
升旗仪式演讲稿
2014/05/08 职场文书
MySQL分库分表详情
2021/09/25 MySQL
Redis实现短信验证码登录的示例代码
2022/06/14 Redis