首页 > 试题广场 >

扑克牌顺子

[编程题]扑克牌顺子
  • 热度指数:484111 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
现在有2副扑克牌,从扑克牌中随机五张扑克牌,我们需要来判断一下是不是顺子。
有如下规则:
1. A为1,J为11,Q为12,K为13,A不能视为14
2. 大、小王为 0,0可以看作任意牌
3. 如果给出的五张牌能组成顺子(即这五张牌是连续的)就输出true,否则就输出false。
4.数据保证每组5个数字,每组最多含有4个零,数组的数取值为 [0, 13]

要求:空间复杂度 ,时间复杂度 ,本题也有时间复杂度 的解法

输入描述:
输入五张扑克牌的值


输出描述:
五张扑克牌能否组成顺子。
示例1

输入

[6,0,2,0,4]

输出

true

说明

中间的两个0一个看作3,一个看作5 。即:[6,3,2,5,4]
这样这五张牌在[2,6]区间连续,输出true 
示例2

输入

[0,3,2,6,4]

输出

true
示例3

输入

[1,0,0,1,0]

输出

false
示例4

输入

[13,12,11,0,1]

输出

false
头像 漫漫云天自翱翔
发表于 2021-06-21 21:40:21
精华题解 题解一:排序+遍历顺子牌的特点:1、顺子一定没有相等的牌;2、顺子中两张相邻的扑克牌的数值差为1,即满足interrapt=numbers[i + 1] - numbers[i] - 1==0;3、当interrapt不为0,代表需要在顺子中插入对应interrapt张牌;4、只有两张王牌;主要思路 展开全文
头像 Maokt
发表于 2021-07-08 14:32:44
精华题解 算法思路一:集合set + 遍历 解题思路: 根据题意,此 55 张牌是顺子的 充分条件 如下:     除大小王外,所有牌 无重复 ;     设此 55 张牌中最大的牌为 max ,最小的牌为 min ( 展开全文
头像 ajaj
发表于 2021-07-18 14:02:33
精华题解 思路: 从题中给出的有效信息: 2副牌 5张牌除大小王都是唯一的 故此我们可以采用遍历就可以解决这个问题,需要用到集合等数据结构 方法一: 具体做法:将 nums 数组依次装入 set集合,遇到 0 则返回装下一个元素,出现重复元素则返回 false,并在其中记录max,min,最终max-mi 展开全文
头像 牛客题解官
发表于 2022-04-25 19:04:10
精华题解 题目的主要信息: 两幅扑克牌抽5张,判断是否为顺子 A为1,J为11,Q为12,K为13 大、小王为 0,0可以看作任意牌 举一反三: 学习完本题的思路你可以解决如下题目: JZ56. 数组中只出现一次的两个数字 JZ50. 第一个只出现一次的字符 方法一:哈希表(推荐使用) 知识点:哈希表 哈 展开全文
头像 鸠摩罗什
发表于 2021-07-02 09:12:45
精华题解 描述        现在有2副扑克牌,从扑克牌中随机五张扑克牌,我们需要来判断一下是不是顺子。有如下规则: A为1,J为11,Q为12,K为13,A不能视为14 大、小王为 0,0可以看作任意牌 如果给出的五张牌能组成 展开全文
头像 牛客786963925号
发表于 2021-07-07 20:12:35
精华题解 解法一:排序 在解决此题目之前,需要明确:在达到何种要求时,会实现「顺子」。 显而易见,当所抽取的非零牌存在重复时,不可能有顺子出现;此外,由于0可以代替任意牌,因此能否组成顺子是由「非零牌」决定的。故,此题的本质是要我们寻找非零牌之间是否满足一定的关系。 题目说明每次抽取牌的数量为5,因此若非零牌 展开全文
头像 huansky
发表于 2019-09-22 23:01:35
可以这么理解,简单来说就是要是5个数字,最大和最小差值在5以内,并且没有重复数值。用一个set来填充数据,0不要放进去。set的大小加上0的个数必须为5个。此外set中数值差值在5以内。代码如下: import java.util.TreeSet; public class Solution { 展开全文
头像 牛小弟
发表于 2020-02-18 12:52:23
本题主要考察读题能力规则啰啰嗦嗦半天,绕圈子,其实题目非常简单:请从输入的一个数组中判断能否构成5个一连的顺子,输入的数范围为0-13的整数,其中0可以表示1~13的任意整数。若能构成顺子,返回true,否则返回false。 public class Solution { public bo 展开全文
头像 郭家兴0624
发表于 2019-08-12 08:45:33
题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子... 展开全文
头像 HFQ1314
发表于 2020-07-18 00:21:30
题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是 展开全文
头像 轨轨=
发表于 2020-02-18 20:38:07
题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育***,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.. 展开全文
头像 牛客799199430号
发表于 2022-02-06 21:09:06
不是顺子的情况概括为两类:1.有除0以外的重复数字;2.除0以外不重复,列表中最大值与最小值之差大于4。 第一种情况好理解,除0以外的数字重复了就无法组成顺子; 第二种情况,在任意一个顺子序列中,最大值与最小值等于4,万能牌可替换任意位置,故满足条件的是列表中最大值与最小值之差小于等于4 展开全文
头像 PG7GO
发表于 2020-07-13 15:52:50
时间复杂度:O(N)空间复杂度:O(1) class Solution { public: bool IsContinuous( vector<int> numbers ) { int maxN=0; int minN=15; in 展开全文
头像 只想要offer+++
发表于 2019-09-14 13:35:51
import java.util.Arrays; public class Solution { public boolean isContinuous(int [] numbers) { int index = -1; Arrays.sort(numbers 展开全文
头像 法拉利201903231900848
发表于 2019-07-30 22:01:02
//1.进行排序 2.计算0的个数 3.看是否有对子 4.计算相邻数之间的间隔 class Solution { public:     bool IsContinuous( vector<int> numbers ) {   &nbs 展开全文
头像 青杨风2199
发表于 2021-07-07 09:01:08
方法一:朴素模拟法——king补充空位 public class Solution { public boolean IsContinuous(int [] numbers) { int[] count = new int[14];//0~13,普通牌卡槽 i 展开全文