题目描述

LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张牌就可以变成“1,2,3,4,5”(大小王分别看作2和4),“So Lucky!”。LL决定去买体育彩票啦。 现在,要求你使用这幅牌模拟上面的过程,然后告诉我们LL的运气如何, 如果牌能组成顺子就输出true,否则就输出false。为了方便起见,你可以认为大小王是0。

思路解析

刚开始看着题,我是懵的。54张牌,它传入的数组,然后我模拟抽牌的过程,弄个随机函数,然后获取5张牌?然后判断是不是顺子?然后返回?
知道看来别人的解释才知道,原来number数组就是抽好的5张牌,你只需要判断就好了。

首先,可以考虑用一个由于大小王代表的0是万能牌,因此,我们可以在排序的时候不用考虑。
然后,我们需要得到除0以外的其他几张牌的情况。
其实要满足顺子的条件,对于这5张牌中,其最大牌面值减去最小牌面值肯定小于5才行。因此这是一个返回结果的判断。
同时,我们还需注意,如果5张牌中,出现了除0以外的重复牌,那么必然不能组成5张牌的顺子。因此需要考虑。

代码

import java.util.TreeSet;
public class Solution {public boolean isContinuous(int [] numbers) {if(numbers == null || numbers.length == 0) return false;TreeSet<Integer> set = new TreeSet<Integer>();int count = 0;//用于记录放入set的0的牌数for(int i = 0;i<numbers.length;i++){if(numbers[i]==0){count++;}else{set.add(numbers[i]);   }}if((count+set.size())!=5){//如果放入的牌数和集合的和不等5说明出现了重复的牌,必然没有5个连续的拍return false;}//集合中最大的数减去最小的数,差小于等于5,说明是连续的或者可以用万能牌大小王拼成连续的if((set.last() - set.first())<5){return true;}//return false;}
}

剑指Offer-42——扑克牌顺子相关推荐

  1. 剑指offer:扑克牌顺子

    题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)-他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体 ...

  2. 剑指Offer之扑克牌顺子

    题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)-他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体 ...

  3. [剑指offer] -- 46.扑克牌顺子

    题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)-他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体 ...

  4. 剑指Offer JZ45 扑克牌顺子(Java)

    一 题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)-他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去 ...

  5. 【LeetCode】剑指 Offer 61. 扑克牌中的顺子

    [LeetCode]剑指 Offer 61. 扑克牌中的顺子 文章目录 [LeetCode]剑指 Offer 61. 扑克牌中的顺子 一.集合Set + 遍历 二.排序 + 遍历 总结 解题思路 根据 ...

  6. Leetcode——连续子数组的最大和(剑指offer 42)

    题目选择Leetcode--剑指offer 42 动态规划基础练习题,也就是最大连续子序列和 解题代码: class Solution { public:int maxSubArray(vector& ...

  7. 【LeetCode】剑指 Offer 42. 连续子数组的最大和

    [LeetCode]剑指 Offer 42. 连续子数组的最大和 文章目录 [LeetCode]剑指 Offer 42. 连续子数组的最大和 一.动态规划 一.动态规划 状态定义 设动态规划列表 dp ...

  8. 剑指 Offer 42. 连续子数组的最大和(官解)

    14天阅读挑战赛 努力是为了不平庸~ 算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!欢迎记录下你的那些努力时刻(算法学习知识点/算法题解/遇到的算法bug/等等),在分享的同时加深对于算 ...

  9. LeetCode -- 剑指 Offer 42. 连续子数组的最大和

    剑指 Offer 42. 连续子数组的最大和 线性 DP 题. 针对于数组nums[i] 而言,以它为结尾的子数组分两种情况:(题目限制:必须是连续数组) num[i] 自身作为独立子数组:f[i] ...

  10. 剑指 Offer 42. 连续子数组的最大和

    摘要 剑指 Offer 42. 连续子数组的最大和 一. 动态规划分析 1.1 动态规划思路分析 假设nums数组的长度是n,下标从0到n−1.我们用 f(i)代表以第i个数结尾的连续子数组的最大和, ...

最新文章

  1. CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)
  2. 神州6号发射成功了--庆祝一下
  3. 强者愈强!疫情拉大“数据资产”贫富差距,顶级公司数据建设靠什么
  4. 机器学习(MACHINE LEARNING)从零搭建一个汽车状态分类器(Tensorflow)
  5. [云炬创业基础笔记]创业计划书常见问题
  6. 检查电脑是否被安装***的三个小命令
  7. Linux vim命令模式、末行模式、编辑模式相互切换
  8. c语言字母输出什么意思,C语言中字符的输入输出以及计算字符个数的方法详解...
  9. iOS html5使用缓存并及时更新方案总结
  10. objective-C CollectionView 加深(添加注册头部View)
  11. linux清理磁盘空间的脚本,在Ubuntu和Linux Mint上释放空间的7种简单方法
  12. 对称 symmetric
  13. Nginx+PHP+MySQL+Ubuntu14.04 64位环境搭建
  14. GIS数据转换成CAD数据,还原显示CASS码、符号样式及高程值等图形属性的解决方案,shp转dwg,arcgis数据转CAD数据
  15. 手机锁屏后微信收款语音不播报?-by:nixs
  16. hikaricp mysql_JAVA连接数据库 #03# HikariCP
  17. 【影音基础】深度解析什么是HDR高动态范围?
  18. 从弗雷格的《概念文字》到模态逻辑的产生与发展
  19. 轩逸android 苹果 蓝牙,【图】Iphone与轩逸车载蓝牙连接的小技巧
  20. unity 多台 显示器 控制_设计专业显示器,哪些参数重要?明基PD2700U显示器给你答案...

热门文章

  1. 【Python】<Matplotlib>Matplotlib图形绘制
  2. 腾讯IEG开源GAME AI SDK:自动化测试吃鸡、MOBA类游戏
  3. rescue-prime:基于Goldilocks域的Rescue-Prime 哈希函数加速
  4. 理解 JVM 如何使用 Windows 和 Linux 上的本机内存
  5. BLE协议--SMP(安全管理协议)
  6. 从零开始的Nesterov动量梯度下降
  7. c语言用星号输出国旗,一年级上册语文(部编版)背诵内容合集,打印一份给孩子!...
  8. 《天天数学》连载52:二月二十一日
  9. 金融人工智能研究报告_2022年
  10. 爷笑了!nginx的配置文件没有生效,访问的都是欢迎界面!