据说是腾讯的面试题,以下是要求:

一副从1到n的牌,每次从牌堆顶取一张放桌子上,再取一张放牌堆底,直到手中没牌。根据桌上的牌堆顺序,输出原先手中牌堆的顺序数组。

实现思路:

1、首先定义一个2维数组,代表最后桌上的牌堆排列情况。内部数组flist[i][0],  flist[i][1]分别表示牌堆的排序和牌面的序号。

2、分n为奇数或偶数2种情况,用for循环逆推出原牌组的的顺序值(顺序为小数在下,大数在上)

3、对新数组用顺序值进行逆向排序后,输出由牌面的序号组成的数组

 def cl(n):
flst = [] #用数组flst定义最后桌上的牌堆顺序
for i in range(1, n+1):
flst.append([i, i])
if n%2 == 0: #n为偶数情况
for t in range(1, int(n/2)+1): #t为循环次数,代表一次取牌放牌顶+牌底的过程
flst[n-t][0] = 2*t - 1
flst[t-1][0] = 2*t
else: #n为奇数情况
flst[0][0]= 1 #新牌堆首张牌必定为原牌堆的最后一张
for t in range(1, n//2+1):
flst[n-t][0] = 2*t
flst[t][0] = 2*t + 1
olst = sorted(flst, key=lambda x: x[0], reverse=True) #对二维数组进行排序
res = [i[1] for i in olst] #求得原牌组牌号
return res

最后测试打印结果

 print(cl(10))
print(cl(11))

输出正确

[5, 6, 4, 7, 3, 8, 2, 9, 1, 10]
[6, 7, 5, 8, 4, 9, 3, 10, 2, 11, 1]

用Python实现扑克牌面试题思路的更多相关文章

  1. 珍藏版 Python 开发工程师面试试题

    珍藏版 Python 开发工程师面试试题 说明:不拿到几家公司的offer,那就是卑鄙的浪费 一.Python_基础语法 1.可变与不可变类型: 2.浅拷贝与深拷贝的实现方式.区别:deepcopy如 ...

  2. Python来做应用题及思路

    Python来做应用题及思路 最近找工作头疼没事就开始琢磨python解应用题应该可以,顺便还可以整理下思路当然下面的解法只是个人理解,也欢迎大佬们给意见或者指点更好的解决办法等于优化代码了嘛,也欢迎 ...

  3. python爬虫常见面试题(二)

    前言 之所以在这里写下python爬虫常见面试题及解答,一是用作笔记,方便日后回忆:二是给自己一个和大家交流的机会,互相学习.进步,希望不正之处大家能给予指正:三是我也是互联网寒潮下岗的那批人之一,为 ...

  4. python爬虫常见面试题(一)

    前言 之所以在这里写下python爬虫常见面试题及解答,一是用作笔记,方便日后回忆:二是给自己一个和大家交流的机会,互相学习.进步,希望不正之处大家能给予指正:三是我也是互联网寒潮下岗的那批人之一,为 ...

  5. 一道快速考察 Python 基础的面试题

    这是前一阵子群友发在群里的一道面试题,利用 Python 字典的特性,可以巧妙地使用精简代码达成完美解. 题目 将 data 转换成 new_data 这种形式,写出转换过程. data = { 'a ...

  6. python 旋转数组 多种解题思路

    leetcode 题目描述:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题. 要求使用空间复杂度为 O(1) 的 ...

  7. 关于Python打包运行的一些思路

    需求 本地开发python django应用程序,然后放到生产环境运行.使用了tensorflow,手动安装包很麻烦.生产环境不能联网,不能使用 pip freeze. 思路: 使用docker,直接 ...

  8. Python 10min系列之面试题解析丨Python实现tail -f功能

    关于这道题,简单说一下我的想法吧.当然,也有很好用的 pyinotify 模块专门监听文件变化,不过我更想介绍的,是解决的思路. 毕竟作为面试官,还是想看到一下解决问题的思路,而且我觉得这一题的难点不 ...

  9. Python全栈面试题

    Mr.Seven   博客园 首页 新随笔 联系 订阅 管理 随笔-132  文章-153  评论-516  不吹不擂,你想要的Python面试都在这里了[315+道题]   写在前面 近日恰逢学生毕 ...

随机推荐

  1. youtobe视频下载

    不用安装,只要把视频地址链接复制过来就好. 1 https://en.savefrom.net/#helper_install 2 https://www.clipconverter.cc/ 3 ht ...

  2. Omnibus 安装

    使用gem gem install omnibus 说明 可能需要配置gem source ,通过 gem source list 可以进行检查 参考如下:   gem source -r https ...

  3. The two of the oldest man need cheers

    At a company dinner, the drinking rule was that two colleagues of similar age clinked glasses of win ...

  4. C++之Lambda研究

    目录 目录 1 1. 前言 1 2. 示例1 1 3. 示例2 2 4. 示例3 3 5. 示例4 3 6. 示例5 6 7. 匿名类规则 6 8. 参考资料 7 1. 前言 本文代码测试环境为“GC ...

  5. koa post提交数据,koa-bodyparser中间件来获取post提交数据

    原生 Nodejs 获取 post 提交数据 首先创建并初始化一个node应用,根路由使用index.ejs模板 var Koa=require('koa') var router = require ...

  6. plsql 如何导入excel数据?

      oracle 导入excel数据? 通过plsql实现 1.准备工作 Excel中的字段名称,必须和表结构字段一 一对应 下面以tdoctor_apply表为例,进行演示 表结构 Excel表数据 ...

  7. 非静态内部类中 static/final 成员变量相关知识

    原文链接:https://blog.csdn.net/qq_20328181/article/details/81391956

  8. 自动化远程部署shell脚本

    历史原因,有一段时间,项目开发采用一种模式:项目开发及代码版本管理在外网,而主要测试在内网.所以为了同步开发进度,每天会将所有服务在外网jenkins上打包好,然后将服务jar包拷进内网,由于内网服务 ...

  9. 平时常说的ThreadLocal,今天就彻底解决它

    前言 一.了解ThreadLocal的作用 二.ThreadLocal简单使用 三.ThreadLocal原理 3.1 ThreadLocal的存取过程 3.2 探究ThreadLocalMap对象 ...

  10. 从Linux服务器下载文件夹到本地

    从Linux服务器下载文件夹到本地 1.使用scp命令 scp /home/work/source.txt work@192.168.0.10:/home/work/ #把本地的source.txt文 ...