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

package sample.java;import java.text.SimpleDateFormat;
import java.util.*;public class Main {public static void main(String args[]) {Main test = new Main();int[] array={0,4,6,8,0};System.out.println(test.isContinuous(array));}public boolean isContinuous(int[] number){if(number==null){return false;}Arrays.sort(number);int numberZero=0;int numberGap=0;for(int i=0;i<number.length && number[i]==0;i++){numberZero++;}int small = numberZero;int big = small+1;while(big < number.length){if(number[small]==number[big])return false;numberGap += number[big] - number[small]-1;small=big;big++;}return (numberGap>numberZero)?false:true;}
}

运算结果为true,如果4修改为3则为false

思路:
第一步:首先把大小王的值默认设置为0,然后计算出随机抽取出来的王的个数,用numberZero表示。在示例中int array = [0,4,6,8,0],即第一个和最后一个为抽取出来的两个王,所以numberZero为2.
第二步:从新排序数组,安从小到大的顺序:[0,0,4,6,8]
为了明白接下来的说明,引入一个名词:坡度,对应示例中的numberGap。我们定义坡度为数组相邻两个值的差减去1(此处的数组为去掉大小王也就是去掉0之后的数组,比如[4,6,8]).统计出所有的相邻坡度和:6和4的坡度为1,8和6的坡度为1.所以数组的总坡度为1+1=2.该示例中计算坡度的代码:

while(big < number.length){if(number[small]==number[big])return false;numberGap += number[big] - number[small]-1;//等于numberGap = numberGap + (number[big] - number[small] - 1);small=big;big++;}

在该示例中计算坡度numberGap结果为2。
第三步:如果大小王也就是0的个数小于总坡度数,则随机抽取的牌不是连续的,反之则连续。

对比生活中的例子:比如盖楼梯,一阶是一块砖,有时候失误一阶高度变成了两块砖或三块砖,此刻修补的方法就是你手里有几个王,一个王就可以弥补一阶的失误。

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

  1. java剑指offer_剑指offer题目java实现

    Problem2:实现Singleton模式 题目描述:设计一个类,我们只能生成该类的一个实例 1 packageProblem2;2 3 public classSingletonClass {4 ...

  2. 剑指Offer题目详解(CPP、JAVA)

    2019.10.11更新 最近开始学习c++,在本文中增加c++的解法,并更新一部分题目的解法. 前言(2018.6.1) 虽然已经度过了艰辛的找实习的日子,到了公司实习.但依然非常怀念那段准备面试. ...

  3. 剑指offer题目及答案

    剑指offer 最近在牛客网上刷剑指offer的题目,现将题目和答案总结如下: 1. 二维数组的查找 2. 替换空格 3. 从尾到头打印链表 4. 重建二叉树 5. 用两个栈实现队列 6. 旋转数组的 ...

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

    面试题36:扑克牌中的顺子 1.题目描述 题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的.2~10为数字本身,A为1,J为11,Q为12,K为13,而大.小王可以看成任意数字 ...

  5. 剑指offer题目记录

    1.如下为类型CMyString的声明,请为该类型添加赋值运算符函数. 1 class CMyString 2 { 3 public: 4 CMyString(char* pData = NULL); ...

  6. 剑指 Offer II 014. 字符串中的变位词

    剑指 Offer II 014. 字符串中的变位词 题目 示例 解答 题目来源为leetcode 题目 给定两个字符串s1和s2,写一个函数来判断s2是否包含s1的某个变位词. 换句话说,第一个字符串 ...

  7. 剑指 offer 题目分析及答案

    1. 前言 2. 实现 Singleton 3. 数组中重复的数字 4. 二维数组中的查找 5. 替换空格 6. 从尾到头打印链表 7. 重建二叉树 8. 二叉树的下一个结点 9. 用两个栈实现队列 ...

  8. 【算法-剑指 Offer】62. 圆圈中最后剩下的数字(环形链表;约瑟夫环;动态规划)

    剑指 Offer 62. 圆圈中最后剩下的数字 - 力扣(LeetCode) 发布:2021年9月12日12:18:52 问题描述及示例 0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每 ...

  9. LeetCode和剑指offer题目大合集

    AlgorithmCode 本仓库收集一些算法的答案,目标是整理一套系统的算法参考答案以供其他学习者参考,我也在慢慢的学算法并且在坚持刷题,我会不定期的上传新的题目,希望大家共同努力! https:/ ...

最新文章

  1. Java 基础 - 如何重写equals()
  2. 冰刃初步使用图解(Win7 64位)
  3. LL-verilog语法:case用法
  4. 中英文标点符号切换的组合键_易混标点符号:一字线(—)、短横线(-)、浪纹线(~)...
  5. android下挂串口中断,请大神看看为啥串口中断无法打断定时器中断
  6. hadoop配置文件_Hadoop分布式集群
  7. 时至 2018 年,还有必要学 Vim 吗?
  8. Contacts Provider使用
  9. 宝塔面板 python管理器2.0安装Mrdoc
  10. 一招教你电脑微信双开
  11. 第二周——团队项目(小小大佬带飞队)
  12. mongodb4.4 windows环境安装
  13. 厦门故事(二):这是我第一次发现,原来风声可以这么好听
  14. 关于下载《Java程序员,上班那点事儿》的电子版
  15. 【杂耍】联想G40装Win7系统
  16. 计算机应用的时间识别的,计算机人工智能识别关键技术及运用
  17. win10之定时关机
  18. M1 Mac安装 arm 软件
  19. 苹果微信验证失败,安卓成功_苹果将​​在微软失败的地方成功吗?
  20. 浏览DELPHI的源代码

热门文章

  1. Rvit中添加尺寸标注的前缀后缀和【一键尺寸定位标注】
  2. 洛谷 P5740 【深基7.例9】最厉害的学生 题解
  3. IDF实验室-伟人的名字
  4. 免费论文检测 论文查重 软件 系统 论文免费检测 论文抄袭检测大师
  5. linux文件系统层级结构标准
  6. 如何去掉字符串前面的中括号
  7. PRD到底该怎么写?更全面的文档范例来了
  8. vue中用canvas实现移动端手写板、电子签名功能
  9. Matplotlib 学习之:给图片 / 图片的子图添加颜色条/渐变条(colorbar)
  10. ES基本介绍(2)(*)