判断扑克牌的顺子

算法题7 判断扑克牌中的顺子 题目   来源 http://www.cnblogs.com/python27/archive/2011/11/27/2264405.html   随机抽取扑克牌中的n张牌,判断是不是顺子,即这5张牌是不是连续的。其中A看成1,J看成11,Q看成12,K看成13,大小王可以看成任何需要的数字。 分析   对于扑克牌来说,数字范围是很明确的,1到K外加大小王(设定为M)。假如这副牌是个顺子, 阅读详情

【题目】

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

【思路】

我们可以把5张牌看成由5个数字组成的数组。大、小王是特殊的数字,我们不妨把它们都定义为0,这样就能和其他扑克牌区分开来了。
  接下来我们分析怎样判断5个数字是不是连续的,最直观的方法是把数组排序。值得注意的是,由于0可以当成任意数字,我们可以用0去补满数组中的空缺。如果排序之后的数组不是连续的,即相邻的两个数字相隔若干个数字,但只要我们有足够的。可以补满这两个数字的空缺,这个数组实际上还是连续的。举个例子,数组排序之后为{0,1,3,4,5}在1和3之间空缺了一个2,刚好我们有一个0,也就是我们可以把它当成2去填补这个空缺。
  于是我们需要做3 件事情: 首先把数组排序,再统计数组中0 的个数,最后统计排序之后的数组中相邻数字之间的空缺总数。如果空缺的总数小于或者等于0 的个数,那么这个数组就是连续的:反之则不连续。
  最后,我们还需要注意一点: 如果数组中的非0 数字重复出现,则该数组不是连续的。换成扑克牌的描述方式就是如果一副牌里含有对子,则不可能是顺子。

【代码】

    //判断扑克牌顺子
    public static boolean isContinuous(int[] nums){
        if(nums==null ||nums.length!=5){
            return false;
        }
        //对元素进行排序
        Arrays.sort(nums);
        int zero=0;
        int need=0;
        //统计大小王的个数
        for(int i=0;i<nums.length;i++){
            if(nums[i]==0){
                zero++;
            }
        }
        //一副牌中不可能有两个以上的王
        if(zero>2){
            return false;
        }
        //第一个非0元素的位置
        int small=zero;
        int big=small+1;
        while(big<nums.length){
            if(nums[small]==nums[big]){
                //前面的数和后面的数重复,则牌不是顺子
                return false;
            }
            //需要0去填补的空位
            need+=(nums[big]-nums[small]-1);
            small=big;
            big++;
        }
        return need<=zero;  
    }
实现JavaScript代码:扑克牌顺子判断 JavaScript是IT行业中最常见的编程语言之一,它在网页交互、前端开发中扮演着重要角色。对于有5年以上经验的开发者来说,它同样是需要持续深入学习的技术。本章节旨在帮助读者复习和掌握JavaScript编程中的核心技巧,从基础语法到高级特性。在某些情况下,内置的排序方法无法满足特定的排序需求,这时就需要实现一个自定义排序函数。自定义排序函数可以处理各种复杂的数据结构,例如对象数组。这里以扑克牌的牌面值排序为例,实现一个自定义排序函数。 阅读详情

相关推荐

Temporal Fusion Transformer(TFT)与扩散模型融合:时间序列预测新范式

本文探讨了Temporal Fusion Transformer(TFT)与扩散模型融合的时间序列预测新范式。该融合方案利用TFT强大的特征提取与可解释性,为扩散模型提供精准的“导航图”,从而在噪声数据中实现鲁棒预测,并原生支持不确定性量化,输出完整的概率分布与置信区间,为金融、能源等领域的风险决策提供更可靠的依据。

weixin_29096377的博客 291

44 - 判断扑克牌是否是顺子

题目: 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。首先应该对该问题做数据抽象,5张普通牌可以用数字代替,大小王是特殊牌,我们可以用 0 代替。将大小王和普通牌分离。 检查是否是顺子: 首先应该进行排序,然后统计 0 的个数, 最后统计相邻数字之间的间隔个数。 如果 0 的次数 大于等

quinn的专栏 6057

单细胞测序流程(五)t-sne聚类分析和寻找marker基因

系列文章目录 单细胞测序流程(一)简介与数据下载 单细胞测序流程(二)数据整理 单细胞测序流程(三)质控和数据过滤——Seurat包分析,小提琴图和基因离差散点图 单细胞测序流程(四)主成分分析——PCA 本期主讲内容——t-sne聚类分析和寻找marker基因 介绍:T-SNE是一种用于探索高维数据的非线性降维算法。它将多维数据映射到适合于人类观察的两个或多个维度。 一、课前准备 之前所使用的数据 R语言的IDE 二、过程 聚类分析的目的是根据细胞的差别所进行细胞分群,两个..

qq_45478665的博客 2万+

No.2判断扑克牌是不是顺子

从一副扑克中随机抽出5张牌,2-10代表相应数字,A代表1,J Q K代表11,12,13,大小王代表任何数字,写一个函数判断这5张牌是否是顺子 exits = ['A', '2', '3', '4', '5', '6', '7', '8', '9', 'J', 'Q', 'K', 'S', 'P'],S、P代表大王小王 ipt = '23Q45' ipt1 = '31S45' ipt2 = '1...

Neo 1万+

Unity游戏开发实战:手把手教你用C#实现一个简单的反向运动学(IK)控制器

本文详细介绍了在Unity游戏开发中如何使用C#实现一个简单的反向运动学(IK)控制器。通过建立骨骼层级结构、实现CCD算法和角度限制,开发者可以轻松创建自然的角色动画效果。文章还提供了可视化调试工具和性能优化方案,帮助提升开发效率。

weixin_42523711的博客 244

QMI8658姿态传感器实战:从校准到自检的完整避坑指南

本文详细解析了QMI8658姿态传感器的校准与自检流程,提供了从硬件环境搭建到高级功能开发的完整避坑指南。通过真实案例揭示电源设计、接口优化、温度补偿等关键细节,帮助开发者提升传感器精度和可靠性,适用于工业级应用场景。

weixin_29184075的博客 455

判定一副牌是否是顺子

转载一个不用排序就判定出顺子的算法:https://blog.youkuaiyun.com/qq_43968080/article/details/85346468 #include <stdio.h> #include <stdlib.h> #include <iostream> using namespace std; #define MAX_COUNT 20...

In_Zihuatanejo的博客 627

基于 STM32 的全自动洗车监控系统设计与实现

本文提出一种基于 STM32F103RCT6 芯片的全自动洗车监控系统方案,通过多传感器融合与智能控制算法,实现车辆检测、洗车流程自动化及状态远程监控。系统集成硬件选型、电路设计、软件流程及通信功能,可广泛应用于智能洗车场景。

weixin_42300449的博客 964

判断7张牌中是否存在顺子牌型

【代码】判断7张牌中是否存在顺子牌型。

fareast_mzh的博客 1192

Linux ARM平台开发系列讲解(GPIO子系统) 2.3.2 GPIO子系统常用函数解析

1. 概述 该章节会记录一年常用的GPIO子系统常用函数,会更具情况不断更新 static inline int gpio_get_value(unsigned int gpio) 功能 :用于获取某个GPIO引脚上的值 gpio : gpio引脚号 返回值:非负值,得到的 GPIO 值;负值,获取失败。 static inline void gpio_set_value(unsigned int gpio, int value) static inline int gpio_cansleep(unsi

DSMGUOGUO的博客 669

【Unity】【VR】如何让Distance Grab抓取物品时限制物品的Rotation

VR中Canvas抓取旋转问题的解决方案 在VR应用中,Canvas作为UI面板常需被抓取拖动,但默认会随手柄产生Z轴旋转,导致UI歪斜。Unity的Rigidbody冻结旋转功能对此无效,因为XR抓取直接修改Transform而非物理模拟。

每日出拳老爷子的博客 611

六、 文 件 管 理

文章目录一、UNIX文件系统概述二、文件的物理结构三、索引结点的管理四、空闲磁盘空间的管理五、文件表的管理六、目录管理 一、UNIX文件系统概述 1. UNIX文件系统的特点 (1) 文件系统的组织是分级树形结构。 (2) 文件的物理结构为混合索引式结构。 (3)空闲盘块采用成组链接法管理。 2. 文件系统的结构 UNIX/Linux的大致目录结构 二、文件的物理结构 三、索引结点的管理 四、空闲磁盘空间的管理 1.文件卷的组织 0#块:引导块或空闲 1#块:超级块(属性块) 索引节点表(区)

asgsmile的博客 2287

【PINN物理信息网络】基于PINN物理信息网络求解瞬态薛定谔方程(python)

【PINN物理信息网络】基于PINN物理信息网络求解瞬态薛定谔方程(python)

k8291121的博客 2724

判断扑克牌中是否存在的顺子

判断扑克牌中是否存在的顺子 题目: 示例: --------------------------------------------------------------------------------------------------------- 因为有王的特殊性所以分为两种情况: 没有摸到王 摸到了王 因为题目是随机抽取五张牌,所以牌的顺序是无序的,为了方便判断是否为顺子...

ZGxiang_的博客 2753

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

判断一组扑克牌是否是顺子

这个题目的解法中用到了bitmap来去重,记录一下,以后遇到这种需要判断是否出现重复的问题记得使用bitmap来节约空间 题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God...

维 1636

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

java判断扑克牌是否为顺子_程序算法设计题,判断扑克牌中的顺子

相信很多人都玩过扑克牌。在扑克牌中,有许许多多的算法供我们学习。仅仅一个斗地主游戏,就可以学习很多的算法。今天和大家分享一个判断扑克牌中的顺子的问题。题目:从扑克牌中随机抽取五张牌,判断是不是一个顺子。其中A为1,J为11,Q为12,K为13,大小王可以看成任意数字(即籁子)。题目分析:首先我们来抽象一下这个题目。首先,我们可以把大小王看成是0,五张牌看成由5个数字组成的数组。判断这五张牌是不是连...

weixin_34547167的博客 1455

Java语言判断扑克牌顺子问题

题目: 从扑克牌中随机抽5张牌,判断是不是顺子,即这5张牌是不是连续的。2-10 为数字本身,A 为 1,J 为 11,Q 为 12,K 为 13,而大小王可以看成任意的 数字。 解题思路: 我们可以把5张牌看成是由5个数字组成的数组。大小王是特殊的数字,我们可以把它们都定义为0,这样就可以和其他的牌区分开来。首先把数组排序,再统计数组中0的个数,最后统计排序之后的数组中相邻数字之...

CallmeZhe的博客 1304

算法—判断扑克牌能否组成顺子

题目 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决定去买体育彩票啦。 现在,

shengpeizhu的博客 1074

Java抽出5张扑克牌,判断是否为顺子

题目描述 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!”。L...

luzhensmart的专栏 1558

判断扑克牌能否组成顺子

从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。 组成顺子有一些条件是必须要满足的, 1.除了大小王之外, 其他牌不能重复 2.除了大小王之外, 最大值-最小值==4(没有零), 最大值-最小值==3或4(有1个零), 最大值-最小值==2或3或4(有2个零) , 但是看到了别人的优化版, 这几种情况可以统一为最大值-最小值<5即可, 不需要看0个数量 tip : 使用se...

gcs的博客 2529

剑指offer-判断五张扑克牌是不是一个顺子

/******************************************************************* Copyright(c) 2016, Tyrone Li All rights reserved. *******************************************************************/ // 作者:TyroneLi // /* Q1: 扑克牌顺子判断 从扑克牌中随机抽取5张牌,判断是不是一个.

OliverkingLi的博客 1730

从扑克牌中随机抽5张牌,判断是不是一个顺子

/* copyright@nciaebupt 转载请注明出处 题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10 为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。 思路一: 我们需要把扑克牌的背景抽象成计算机语言。不难想象,我们可以把5张牌看成由5个数字 组成的数组。大小王是特殊的数字,我们不妨把它们都当成0,这样和其他扑克牌代表的数 字

nciaebupt 6445

剑指-offer-扑克牌中的顺子判断

在扑克游戏中,判断一副牌是否构成一个“顺子”是一个经典的问题。顺子指的是连续的五个数字(可以包含大小王),其中大小王可以视作任意数字来填补空缺。具体来说,给定一副牌,判断这副牌能否构成一个有效的顺子。

2501_92375421的博客 1286

java从扑克牌中随机抽5张排,判断是不是一个顺子

2~10为数字本身,A为1,J为11,Q为12,K为13,而大,小王可以看成任意数字 我是真的造了一副牌去解决这个问题的,一个数组长度为54 这道题的重点在于判断是否是一个顺子,首先将五个数进行排序,计算每相邻两个数之间的差的和跟0(大小王)的个数进行比较,如果这个差的和小于0的个数,那么就是一个顺子,此外还要考虑除0以外如果出现对子直接判断不是顺子 部分代码如下 public static bo...

weixin_42738587的博客 2816

判断扑克牌中的顺子

题目:随机抽取扑克牌中的5张牌,判断是不是顺子,即这5张牌是不是连续的。其中A看成1,J看成11,Q看成12,K看成13,大小王可以看成任何需要的数字。 分析1:这道题的意思很明确,我们玩扑克的过程中,也经常碰到这样的情况。我们先看看在现实生活中,我们是怎么样处理的,我想大部分人都是这样做的:先把5张牌从小到大进行排序,然后直接判断。而如果碰到大小王,我们会除去大小王之后排序,然后判断不相邻的两

happylife1527的专栏 1374
上一篇: 丑数
下一篇: 把数组排成最小的数
ka_ko
博客等级 码龄11年 168粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值