JZ45 扑克牌顺子
JZ45 扑克牌顺子
- JZ45 扑克牌顺子
- 问题描述
- 问题分析
- 解法
JZ45 扑克牌顺子
问题描述
现在有2副扑克牌,从扑克牌中随机五张扑克牌,我们需要来判断一下是不是顺子。
有如下规则:
- A为1,J为11,Q为12,K为13,A不能视为14
- 大、小王为 0,0可以看作任意牌
- 如果给出的五张牌能组成顺子(即这五张牌是连续的)就输出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这样的顺子有一个规律:
- 0的个数小于等于4
- 除零之外最大的数和最小的数之差小于等于4
- 除零之外的数是不重复的
满足以上条件的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 扑克牌顺子相关推荐
- 剑指Offer JZ45 扑克牌顺子(Java)
一 题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)-他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去 ...
- 剑指Offer(Java实现)扑克牌顺子
扑克牌顺子 题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)-他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话, ...
- 《剑指offer》-- 栈的压入与弹出序列、把字符串转化为整数、扑克牌顺子、孩子们的游戏(圆圈中最后剩下的数)
一.栈的压入与弹出序列: 1.题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序. 假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序 ...
- 牛客题霸 [扑克牌顺子] C++题解/答案
管理博文 牛客题霸 [扑克牌顺子] C++题解/答案 题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)-他随机从中抽出了5张牌,想测测自己 ...
- java变量小明扑克牌_算法练习篇之:扑克牌顺子
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 代码实现 import java.util.Arrays; public class isContinuous { //扑克牌顺子(必须连续的五个数字) ...
- 剑指offer——面试题44:扑克牌顺子
剑指offer--面试题44:扑克牌顺子 Solution1: 20180907重做 书上的思路. class Solution { public:bool IsContinuous(vector&l ...
- 【剑指offer{40-44}】和为S的连续正数序列、和为S的两个数字、左旋转字符串、翻转单词顺序列、扑克牌顺子
文章目录 和为S的连续正数序列 题目描述 C++代码 和为S的两个数字 题目描述 C++代码 左旋转字符串 题目描述 C++代码 翻转单词顺序列 题目描述 C++代码 扑克牌顺子 题目描述 C++代码 ...
- java面试(二十五)--(1)redis为什么读写速率快性能好(2)说说web.xml文件中可以配置哪些内容(3)和的区别(4)扑克牌顺子
1. redis为什么读写速率快性能好? 1.Redis将数据存储在内存上,避免了频繁的IO操作 2.Redis其本身采用字典的数据结构,时间复杂度为O(1),且其采用渐进式的扩容手段 3.Redis ...
- 扑克牌顺子(C++)
扑克牌顺子 描述 现在有2副扑克牌,从扑克牌中随机五张扑克牌,我们需要来判断一下是不是顺子. 有如下规则: A为1,J为11,Q为12,K为13,A不能视为14 大.小王为 0,0可以看作任意牌 ...
最新文章
- DSP unresolved symbol问题的解决
- 无法通过windows installer服务安装此安装程序包。您必须安装带有更新版本windows Installer服务的Windows
- matplotlib-绘制精美的图表
- 【Spring注解系列03】@Scope与@Lazy
- Go sync.WaitGroup的用法
- bash的配置文件以及加载的顺序
- 过完年,又不想上班了?
- 前端学习(1962)vue之电商管理系统电商系统之渲染商品分类的选择框
- java学习(67):匿名内部类
- S3C6410移植u-boot-2010.3(2)基本的启动信息修改
- python去重保留唯一一个值_Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)...
- 设计模式学习笔记——装饰(Decorator)模式
- 内网渗透(抓取明文密码)
- 这是我看过把Spring Cloud核心组件讲的最明白的一个故事了
- 卡贴机变无锁教程_有锁机变无锁教程 教你轻松设置去掉卡贴有锁机变无锁完美4G...
- 中国下一代AI开源框架:国际、创新、实用和长期主义
- *7-1 CCF 2015-09-1 数列分段
- 共振峰估计实验MATLAB
- IDEA快捷键大全(详细)
- C语言源文件名为什么无效,c语言源程序常错误分类及其改错.doc