前言

今天在 B 站上看了一个和扑克牌、算法、数学有关的心灵感应魔术,适合撩妹子。

https://b23.tv/uXIQeL

看完之后,想写一篇和扑克牌有关的算法文章。

正文

题目描述

从扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这 5 张牌是不是连续的。2~10 为数字本身,A 为 1 ,J 为 11 ,Q 为 12 ,K 为 13 ,而大、小王为 0 ,可以看成任意数字。A 不能视为 14 。

示例 1:

输入: [1,2,3,4,5]
输出: True

示例 2:

输入: [0,0,1,2,5]
输出: True

限制:

  • 数组长度为 5

  • 数组的数取值为 [0, 13]

题目分析

这个题目还是挺简单的。

直接遍历看看是否有重复的牌,有的话直接返回 false,否则找出这五张牌最大值和最小值,由于大、小王都为 0 且可以充当任意数字,所以要先 0 不在寻找最大值和最小值的考虑范围内,最后使用最大值减去最小值,判断结果是否小于 5 , 如果小于 5 说明加上可以看出任意数的大小王之后可以构成顺子,否则不行。

动画理解如下:

图片:

<<< 左右滑动见更多 >>>

参考代码:

class Solution {public boolean isStraight(int[] nums) {HashSet<Integer> set = new HashSet<>();//数组的数取值为 [0, 13] //所以可以设置最大值为 0 ,最小值为 14,这样在一开始遍历的过程中出现非 0 的情况时,总是会比最大值 0 更大,比最小值 14 更新,从而更新最大最小值int max = 0, min = 14;for(int num : nums){//跳过大小王if(num == 0){continue;}//记录最大最小值min = Math.min(num, min);max = Math.max(num, max);// 如果存在重复元素,直接返回falseif(set.contains(num)){return false;         }//记录符合要求的牌set.add(num);}//判断最大最小值之差是否小于 5return max - min < 5;}
}

2021 年开始,程序员吴师兄会每天更新一篇原创文章,包括但不限于算法、数据结构、编程、程序人生等内容,如果哪天觉得写得内容不错,烦请点个赞;如果哪天觉得内容不喜欢,可以隔几天再来看;如果哪天没有更新原创,会发个比较可观的红包。

今天是持续写作第 8 / 100 天。

今天是持续跑步第 2 / 100 天。

如果你有想交流的话题,欢迎留言。

·················END·················

你好,我是程序员吴师兄,程序员与自媒体双料博主,GitHub 70k star,知乎 10w 关注,公众号 25w 粉丝。

很开心与你相遇,希望和你一起成为更厉害的程序员,一起进步!

扑克牌魔术里面的算法相关推荐

  1. 扑克牌魔术的暴力算法——可用来骗美女哦

    少年时有好友向我展示了一个扑克牌魔术:他拿出一副牌的A-10的所有牌共40张,洗乱,让我背着他拿走一张牌,接着他迅速地一张张浏览剩下的39张牌,浏览两遍之后,他准确地说出了拿走牌的点数和花色.这是一个 ...

  2. 随便选一张扑克牌_扑克牌魔术手法教学,简单易学的纸牌魔术,三分钟让你成为大师...

    标签: 魔术手法 扑克牌魔术 魔术技巧教学 纸牌魔术揭秘 所有的纸牌魔术家都知道怎样假装把一张牌塞进牌堆,然后从顶部翻出来来让观众吃惊.这个技巧用来练习手速.手指灵敏度.适时分散观众注意力和表演艺术绝 ...

  3. Java基础练习——读心术(扑克牌魔术——21张扑克牌)

    Java基础练习--读心术(扑克牌魔术--21张扑克牌) 用到了Scanner,for循环,if-else语句,集合,线程的Thread.sleep()方法 话不多说,直接上代码!

  4. Java基础练习——读心术(扑克牌魔术——21张扑克牌)–代码简化版

    Java基础练习--读心术(扑克牌魔术--21张扑克牌)–代码简化版 代码 import java.util.ArrayList; import java.util.Collections; impo ...

  5. C语言魔术阵,C语言编程:扑克牌魔术

    看到一个扑克牌魔术的题目,觉得挺有意思. 题目网址:http://zhidao.baidu.com/question/407505626.html 这个题目已经有了答案. 但是答案的程序,看起来有些费 ...

  6. 用Java写的一个简单的扑克牌魔术

    一个用Java写了的简单的扑克牌魔术 一个用Java代码写的简单的扑克牌魔术,就是常见的在心里记一张牌,然后问你两次范围就知道答案,好像原理有点像二进制,小时候大人用这个魔术逗小孩开心,10几年了,原 ...

  7. 用SQL解析神奇的扑克牌魔术

    日前据媒体爆料,已上过多届春晚的魔术师刘谦因档期等原因婉拒了央视春晚的邀请,而马年春晚的魔术师YIF今年也没有上春晚的行程.但是可以确定的是,今年我们又会在春晚上看到魔术表演这一环节. 在前几年,刘谦 ...

  8. 7-5 小明的第一个扑克牌“魔术”(队列或链表操作) (10 分)java版

    小明刚上小学,学会了第一个扑克牌"魔术",到处给人表演.魔术的内容是这样的: 他手里握着一叠扑克牌:A,2,-J,Q,K 一共13张.他先自己精心设计它们的顺序,然后正面朝下拿着, ...

  9. 累积计数法的两个应用:骑士的金币和扑克牌魔术

    骑士的金币 国王将金币作为工资,发放给忠诚的骑士.第一天,骑士收到一枚金币:之后两天(第二天和第三天)里,每天收到两枚金币:之后三天(第四.五.六天)里,每天收到三枚金币:之后四天(第七.八.九.十天 ...

最新文章

  1. python 每次读一行-转载 python每次读入文件一行的问题(血的教训啊)
  2. mysql 命令 不对齐,MySQL中自己不太常用的命令
  3. python控制命令行光标位置_python实现cli命令行的进度条光标滚动显示效果
  4. QT学习:QTime类
  5. P1828 香甜的黄油 Sweet Butter (spfa)
  6. 基于JAVA+Swing+MYSQL的工资管理系统
  7. 协同过滤算法(天池竞赛试题)
  8. 如何提升人脸识别的精度_宝比万像人脸识别:健身房人脸识别门禁系统如何助力健身房管理?...
  9. 解决Odoo出现的Unable to send email, please configure the sender's email address or alias.
  10. 4*4矩阵键盘原理分析以及代码展示
  11. 维盟无线ap服务器地址,让WiFi飞起来!维盟室外无线AP桥接与中继配置方案
  12. Vue 拖拽缩放组件 vue-drag-resize属性
  13. 教程-ftp21端口,OpenSSH,22,内部敏感服务对外开放存在风险
  14. 在Ubuntu 18中安装Pycharm及创建Pycharm快捷方式
  15. Android后台Kill(二):ActivityManagerService与App现场恢复机制
  16. Unity 实现人工智能语音
  17. Oracle+SQL优化第二弹
  18. 免费是王道!盘点国外八大知名杀毒软件产品
  19. android editable接口,Spannable与Editable区别
  20. android加密电话,有信加密电话软件

热门文章

  1. java中iterable_java-如何实现Iterable接口?
  2. 推荐 :批大小如何影响模型学习 你关注的几个不同的方面
  3. linux 主机配置检查-3(linux查看补丁)
  4. vSphere-ESXi
  5. C语言bool类型变量命名,bool类型怎么用(c语言bool类型 怎么用)
  6. MySQL可重复读事务隔离具体是怎么实现的?
  7. 如何判断一个浮点数是不是整数
  8. Drupal第三方模块汇集(一)
  9. 对学生生涯的总结以及对步入社会的规划与展望
  10. 数据结构入门学习之数据结构学些什么?