扑克牌中的顺子:从一副扑克牌中抽取5张,判断是不是一个顺子。 2- 10 为自身,A 为1 JQK为11 12 13,大小王为任意数

先按从小到大对5张牌进行排序
首先判断大小王个数K(只能为0 1 2)
然后判断不连续的间隔之和M,比较M和K的大小;如果在遍历的过程中出现了对子,那么就直接退出,不可能再形成顺子

public class _Q44<T> {public boolean IsContinuous(int nums[]){if(nums == null) return false;if(nums.length < 5) return false;// 采用hash表进行排序int hash[] = new int[14];for(int i=0; i<nums.length; i++){hash[nums[i]]++;}int index = 0;for(int i=0; i<hash.length; i++){while(hash[i] > 0){nums[index++] = i;hash[i]--;}}boolean result = false;int numberOfZero = 0;int numberOfGap = 0;// 查找大小王个数for(int i=0; i<nums.length; i++){if(nums[i] == 0) numberOfZero++;else break;}for(int i=numberOfZero; i<(nums.length - 1); i++){// 出现对子if(nums[i+1] == nums[i]) {numberOfGap = numberOfZero + 1;result = false;break;}else{numberOfGap += nums[i+1] - nums[i] - 1;}}// 判断大小王是否可以填补空缺 if(numberOfZero >= numberOfGap) result = true;return result;}}

测试代码:

public class _Q44Test extends TestCase {_Q44<?> poker = new _Q44();public void test(){int pokers1[] = {0, 4, 5, 3, 1};int pokers2[] = {0, 0, 5, 3, 1};int pokers3[] = {0, 0, 11, 3, 1}; // 间隔较大int pokers4[] = {2, 3, 4, 3, 1}; // 含有对子int pokers5[] = null;System.out.println(poker.IsContinuous(pokers1));System.out.println(poker.IsContinuous(pokers2));System.out.println(poker.IsContinuous(pokers3));System.out.println(poker.IsContinuous(pokers4));System.out.println(poker.IsContinuous(pokers5));}}

【剑指offer-Java版】44扑克牌的顺子相关推荐

  1. 剑指offer java版 test3—从尾到头打印链表

    标题:剑指offer java版 test3-从尾到头打印链表 题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 解答:知识不够全面,用ArrayList做的 但是看到大佬们还可以 ...

  2. 剑指offer java版 test42—找出和为S的两个数,左右夹逼法(双指针法)

    前言:受上一题的启发,这题自己也编出来了.在碰到这种有序数列的时候,经常会用到双指针法,一个指左边,一个指右边,然后依照规则移动,增加或缩小范围.很实用. 题目: 输入一个递增排序的数组和一个数字S, ...

  3. 剑指offer java版(三)

    二叉搜索树的后序遍历 问题描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 解题思路 对于后序遍历来说, ...

  4. 剑指offer java版(一)

    二维数组中的查找 问题描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数 ...

  5. 剑指offer没有java版吗_剑指Offer(Java版) 持续更新中

    面试题2 单例(之前有整理,略) 面试题3 二维数组中的查找 public boolean find(int target, int [][] array) { boolean found = fal ...

  6. 剑指Offer第二版Java代码实现

    剑指Offer第二版Java代码实现 A.单例模式 面试题 2:实现Singleton模式 B.面试需要的基础知识 面试题 3:数组中重复的数字 面试题 4:二维数组的查找 面试题 5:替换空格 面试 ...

  7. 剑指offer——面试题44:扑克牌顺子

    剑指offer--面试题44:扑克牌顺子 Solution1: 20180907重做 书上的思路. class Solution { public:bool IsContinuous(vector&l ...

  8. 剑指Offer题目:从扑克牌中随机抽 5 张牌,判断是不是顺子,即这 5 张牌是不是连续的。 2-10 为数字本身,A 为 1,J 为 11,Q 为 12,K 为 13,而大小王可以看成任意的 数字。

    剑指Offer面试题 44:扑克牌的顺子 从扑克牌中随机抽 5 张牌,判断是不是顺子,即这 5 张牌是不是连续的. 2-10 为数字本身,A 为 1,J 为 11,Q 为 12,K 为 13,而大小王 ...

  9. 剑指offer最新版_剑指Offer——Java版本(持续更新)

    0 前言 邻近校招,算法要命!!! 本文为研究剑指Offer过程中的笔记,整理出主要思路以及Java版本题解,以便记忆和复习. 参考整理来自<剑指Offer 第二版>. 特别注意,对每道题 ...

  10. 剑指offer第二版(leetcode)Java题解(不断更新)

    1 数组中的重复数字 题目 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一 ...

最新文章

  1. web_reverse_proxy -- haproxy
  2. 修改RAC VIP IP
  3. 工业互联网的最后一公里
  4. zabbix使用宏自动发现挂载的文件系统并进行监控
  5. 【SSH网上商城项目实战28】使用Ajax技术局部更新商品数量和总价
  6. 各类曲线的参数方程_三、常见曲线的参数方程.ppt
  7. 软件需求分析——需求工程导论
  8. linux配置和查看dns三种方式 Non-authoritative answer
  9. 大数据技术的发展现状和应用前景
  10. VBA实现批量图片格式转换
  11. 年薪15万的80后小本科:只要6分钟,告诉你少走6年弯路
  12. python怎么过滤标点符号大全_python 过滤标点符号
  13. 【Java+MySQL】随机添加测试数据栗子
  14. 34%的出轨率是怎么算的
  15. centos上安装cdh2.6的方法
  16. 小学生计算机课的演讲稿,小学生课前优秀演讲稿三分钟定稿(电子版)
  17. JS抽象语法树AST基础学习
  18. 计算机仿真在机械行业中的应用,计算机仿真技术在机械行业中的应用
  19. 简单常用日语汇总(转)
  20. 网站劫持后通过什么好办法可以修复?

热门文章

  1. MFC中的CString.Format及CString,string,char*之间的转换
  2. python函数注释 参数 省略号_python – make函数在help()函数中有参数的省略号
  3. python经典题库和答案_吐血总结,Python经典面试题及答案
  4. Win10自动息屏太快解决方法
  5. 变量值为NAN的什么意思
  6. oracle解密des乱码,Oracle中des等算法的加解密
  7. redis cli 删除key 模糊_redis 常用函数
  8. 聊聊storm的direct grouping
  9. java实现遍历树形菜单方法——service层
  10. 《企业大数据系统构建实战:技术、架构、实施与应用》一3.2 如何选择解决方案...