网易有道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挑选文件夹里宽大于300图片的方法
Mar 05 Python
在Python中使用__slots__方法的详细教程
Apr 28 Python
剖析Django中模版标签的解析与参数传递
Jul 21 Python
python制作websocket服务器实例分享
Nov 20 Python
深入理解Python中变量赋值的问题
Jan 12 Python
Python正则替换字符串函数re.sub用法示例
Jan 19 Python
pandas apply 函数 实现多进程的示例讲解
Apr 20 Python
python3的输入方式及多组输入方法
Oct 17 Python
在python中实现强制关闭线程的示例
Jan 22 Python
Python实现FTP弱口令扫描器的方法示例
Jan 31 Python
python利用Excel读取和存储测试数据完成接口自动化教程
Apr 30 Python
python 动态绘制爱心的示例
Sep 27 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性能测试工具xhprof的详解
2013/06/03 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
PHP实现上传多文件示例代码
2017/02/20 PHP
PHP如何读取由JavaScript设置的Cookie
2017/03/22 PHP
PHP实时统计中文字数和区别
2019/02/28 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
javascript concat数组累加 示例
2009/09/03 Javascript
stream.js 一个很小、完全独立的Javascript类库
2011/10/28 Javascript
Ajax提交与传统表单提交的区别说明
2014/02/07 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
2015/12/02 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
2016/09/01 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
浅谈js中几种实用的跨域方法原理详解
2016/12/02 Javascript
Vue.js教程之axios与网络传输的学习实践
2017/04/29 Javascript
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
JavaScript的级联函数用法简单示例【链式调用】
2019/03/26 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
详解使用mocha对webpack打包的项目进行&quot;冒烟测试&quot;的大致流程
2020/04/27 Javascript
Python中MySQLdb和torndb模块对MySQL的断连问题处理
2015/11/09 Python
全面理解Python中self的用法
2016/06/04 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
2018/05/04 Python
python实现的自动发送消息功能详解
2019/08/15 Python
python matplotlib包图像配色方案分享
2020/03/14 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
2020/05/23 Python
keras使用Sequence类调用大规模数据集进行训练的实现
2020/06/22 Python
Python新建项目自动添加介绍和utf-8编码的方法
2020/12/26 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
英国家喻户晓的高街品牌:River Island
2017/11/28 全球购物
机关办公室岗位职责
2014/04/16 职场文书
村委会贫困证明范文
2014/09/21 职场文书
预备党员表决心的话
2015/09/22 职场文书
2016年党课培训学习心得体会
2016/01/07 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书
导游词之扬州大明寺
2019/10/09 职场文书