JZ45 扑克牌顺子

  • JZ45 扑克牌顺子
    • 问题描述
    • 问题分析
    • 解法

JZ45 扑克牌顺子

问题描述

现在有2副扑克牌,从扑克牌中随机五张扑克牌,我们需要来判断一下是不是顺子。
有如下规则:

  1. A为1,J为11,Q为12,K为13,A不能视为14
  2. 大、小王为 0,0可以看作任意牌
  3. 如果给出的五张牌能组成顺子(即这五张牌是连续的)就输出true,否则就输出false。
    例如:给出数据[6,0,2,0,4]
    中间的两个0一个看作3,一个看作5 。即:[6,3,2,5,4]
    这样这五张牌在[2,6]区间连续,输出true
    数据保证每组5个数字,每组最多含有4个零,数组的数取值为 [0, 13]

问题分析

一副牌所有的数字所能组成的连续的数

0 1 2 3 4 5 6 7 8 9 10 11 12 13

0可以是[1,13]中任意的数
我发现,想1,2,3,4,5或者0,0,5,0,7这样的顺子有一个规律:

  1. 0的个数小于等于4
  2. 除零之外最大的数和最小的数之差小于等于4
  3. 除零之外的数是不重复的

满足以上条件的5个数就能组成顺子

解法

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Solution {public boolean IsContinuous(int [] numbers) {//按照从小到达给数组排序Arrays.sort(numbers);//0的个数int zero=0;//一个set集合,用来判断除0之外是否有重复值Set<Integer> set=new HashSet<Integer>();for (int i=0;i<numbers.length;i++){//统计0的个数if (numbers[i]==0)zero++;//将不为0的数装入set集合,去重复if (numbers[i]!=0)set.add(numbers[i]);}//0之外的最小值int min=numbers[zero];//最大值int max=numbers[numbers.length-1];//0的个数要小于等于4if (zero<=4){//最大值-最小值要小于等于4if (max-min<=4){//如歌set集合的大小和数组中非0数字的个数相等,则没有重复if (set.size()==numbers.length-zero){return true;}}}return false;}
}

JZ45 扑克牌顺子相关推荐

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

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

  2. 剑指Offer(Java实现)扑克牌顺子

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

  3. 《剑指offer》-- 栈的压入与弹出序列、把字符串转化为整数、扑克牌顺子、孩子们的游戏(圆圈中最后剩下的数)

    一.栈的压入与弹出序列: 1.题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序. 假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序 ...

  4. 牛客题霸 [扑克牌顺子] C++题解/答案

    管理博文 牛客题霸 [扑克牌顺子] C++题解/答案 题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)-他随机从中抽出了5张牌,想测测自己 ...

  5. java变量小明扑克牌_算法练习篇之:扑克牌顺子

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 代码实现 import java.util.Arrays; public class isContinuous { //扑克牌顺子(必须连续的五个数字) ...

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

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

  7. 【剑指offer{40-44}】和为S的连续正数序列、和为S的两个数字、左旋转字符串、翻转单词顺序列、扑克牌顺子

    文章目录 和为S的连续正数序列 题目描述 C++代码 和为S的两个数字 题目描述 C++代码 左旋转字符串 题目描述 C++代码 翻转单词顺序列 题目描述 C++代码 扑克牌顺子 题目描述 C++代码 ...

  8. java面试(二十五)--(1)redis为什么读写速率快性能好(2)说说web.xml文件中可以配置哪些内容(3)和的区别(4)扑克牌顺子

    1. redis为什么读写速率快性能好? 1.Redis将数据存储在内存上,避免了频繁的IO操作 2.Redis其本身采用字典的数据结构,时间复杂度为O(1),且其采用渐进式的扩容手段 3.Redis ...

  9. 扑克牌顺子(C++)

    扑克牌顺子 描述   现在有2副扑克牌,从扑克牌中随机五张扑克牌,我们需要来判断一下是不是顺子. 有如下规则: A为1,J为11,Q为12,K为13,A不能视为14 大.小王为 0,0可以看作任意牌 ...

最新文章

  1. DSP unresolved symbol问题的解决
  2. 无法通过windows installer服务安装此安装程序包。您必须安装带有更新版本windows Installer服务的Windows
  3. matplotlib-绘制精美的图表
  4. 【Spring注解系列03】@Scope与@Lazy
  5. Go sync.WaitGroup的用法
  6. bash的配置文件以及加载的顺序
  7. 过完年,又不想上班了?
  8. 前端学习(1962)vue之电商管理系统电商系统之渲染商品分类的选择框
  9. java学习(67):匿名内部类
  10. S3C6410移植u-boot-2010.3(2)基本的启动信息修改
  11. python去重保留唯一一个值_Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)...
  12. 设计模式学习笔记——装饰(Decorator)模式
  13. 内网渗透(抓取明文密码)
  14. 这是我看过把Spring Cloud核心组件讲的最明白的一个故事了
  15. 卡贴机变无锁教程_有锁机变无锁教程 教你轻松设置去掉卡贴有锁机变无锁完美4G...
  16. 中国下一代AI开源框架:国际、创新、实用和长期主义
  17. *7-1 CCF 2015-09-1 数列分段
  18. 共振峰估计实验MATLAB
  19. IDEA快捷键大全(详细)
  20. C语言源文件名为什么无效,c语言源程序常错误分类及其改错.doc

热门文章

  1. 【HTML系列】第二章 · HTML基础
  2. JavaScript - 语言提高
  3. linux kernel2.6中软中断运行线程ksoftirqd的创建
  4. 计算机页面里的坚果云删不了怎么回事,我的坚果云文件夹为什么无法删除
  5. 【JVM】初学JVM
  6. python如何获取星期几
  7. 怎么设置不同页的页眉
  8. 你所厌恶的正是别人渴望的
  9. 包装设计模式-Decorator
  10. spring缓存注解@Cacheable和@CacheEvict,设置过期时间和批量模糊删除