网易有道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 代码性能优化技巧分享
Aug 07 Python
django自定义Field实现一个字段存储以逗号分隔的字符串
Apr 27 Python
Python中itertools模块用法详解
Sep 25 Python
python实现识别手写数字 python图像识别算法
Mar 23 Python
解决Python2.7读写文件中的中文乱码问题
Apr 12 Python
python实现图片批量压缩程序
Jul 23 Python
用python给自己做一款小说阅读器过程详解
Jul 11 Python
Python 变量的创建过程详解
Sep 02 Python
详解python破解zip文件密码的方法
Jan 13 Python
如何基于windows实现python定时爬虫
May 01 Python
利用python 读写csv文件
Sep 10 Python
Ubuntu20下的Django安装的方法步骤
Jan 24 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 __autoload函数(自动载入类文件)的使用方法
2012/02/04 PHP
一漂亮的PHP图片验证码实例
2014/03/21 PHP
PHP动态编译出现Cannot find autoconf的解决方法
2014/11/05 PHP
浅谈PHP的反射API
2017/02/26 PHP
php实现数组中出现次数超过一半的数字的统计方法
2018/10/14 PHP
js类中获取外部函数名的方法与代码
2007/09/12 Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
2013/01/02 Javascript
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
javascript中的事件代理初探
2014/03/08 Javascript
jQuery学习笔记之2个小技巧
2015/01/19 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
深入浅析jQuery对象$.html
2016/08/22 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
2017/04/01 Javascript
vue中各组件之间传递数据的方法示例
2017/07/27 Javascript
使用jQuery给Table动态增加行、清空table的方法
2018/09/05 jQuery
Vuex 快速入门(简单易懂)
2018/09/20 Javascript
vue如何搭建多页面多系统应用
2020/06/17 Javascript
Python unittest模块用法实例分析
2018/05/25 Python
在Pycharm中设置默认自动换行的方法
2019/01/16 Python
Python实现使用request模块下载图片demo示例
2019/05/24 Python
Python Pandas 箱线图的实现
2019/07/23 Python
python对象转字典的两种实现方式示例
2019/11/07 Python
TheFork葡萄牙:欧洲领先的在线餐厅预订平台
2019/05/27 全球购物
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
化工实习心得体会
2014/09/09 职场文书
教师三严三实心得体会
2014/10/11 职场文书
2015年教师节广播稿
2015/08/19 职场文书
2016年植树节红领巾广播稿
2015/12/17 职场文书
合作协议书格式范本
2016/03/21 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书
导游词之青岛崂山
2019/12/27 职场文书
Nginx快速入门教程
2021/03/31 Servers
k-means & DBSCAN 总结
2021/04/27 Python
Java基础之线程锁相关知识总结
2021/06/30 Java/Android
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js