网易有道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类定义和类继承详解
May 08 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
Jun 03 Python
Python运算符重载详解及实例代码
Mar 07 Python
机器学习的框架偏向于Python的13个原因
Dec 07 Python
Python实现图片转字符画的代码实例
Feb 22 Python
Python接口测试get请求过程详解
Feb 28 Python
django 前端页面如何实现显示前N条数据
Mar 16 Python
解决jupyter notebook 出现In[*]的问题
Apr 13 Python
如何使用python切换hosts文件
Apr 29 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
Jun 11 Python
Python中return函数返回值实例用法
Nov 19 Python
Python使用openpyxl批量处理数据
Jun 23 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简单静态页生成过程
2008/03/27 PHP
phpinfo 系统查看参数函数代码
2009/06/05 PHP
PHP 批量更新网页内容实现代码
2010/01/05 PHP
非常有用的9个PHP代码片段
2016/04/06 PHP
关于Laravel-admin的基础用法总结和自定义model详解
2019/10/08 PHP
JXTree对象,读取外部xml文件数据,生成树的函数
2007/04/02 Javascript
一行代码实现纯数据json对象的深度克隆实现思路
2013/01/09 Javascript
如何在MVC应用程序中使用Jquery
2014/11/17 Javascript
javascript中DOM复选框选择用法实例
2015/05/14 Javascript
jquery背景跟随鼠标滑动导航
2015/11/20 Javascript
jquery 判断是否支持Placeholder属性的方法
2017/02/07 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
2018/08/22 Javascript
JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例
2018/12/14 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
2019/07/27 Javascript
Vue路由前后端设计总结
2019/08/06 Javascript
layui 地区三级联动 form select 渲染的实例
2019/09/27 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
[28:48]《真视界》- 2017年国际邀请赛
2017/09/27 DOTA
python解析xml文件实例分析
2015/05/27 Python
Python找出文件中使用率最高的汉字实例详解
2015/06/03 Python
python 中split 和 strip的实例详解
2017/07/12 Python
python之Character string(实例讲解)
2017/09/25 Python
Python 实现Numpy中找出array中最大值所对应的行和列
2019/11/26 Python
Django ModelForm操作及验证方式
2020/03/30 Python
python Django 反向访问器的外键冲突解决
2020/05/20 Python
学会python自动收发邮件 代替你问候女友
2020/05/20 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
2021/03/03 Python
解决HTML5手机端页面缩放的问题
2017/10/27 HTML / CSS
Elemis美国官网:英国的第一豪华护肤品牌
2018/03/15 全球购物
美国社交购物市场:MassGenie
2019/02/18 全球购物
个人职业生涯规划书1500字
2013/12/31 职场文书
实习单位接收函模板
2014/01/10 职场文书
环保标语大全
2014/06/12 职场文书
欠条样本
2015/07/03 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书