庆阳市推端谷45号
办公时间:上午9:00-下午6:00

游戏动态

首页 / Our News /扑克牌顺子判断的几种思路解析

扑克牌顺子判断的几种思路解析

2025-12-29 12:13:30

您好!关于“扑克牌顺子”问题,这是一个常见的编程题目,在牛客网上也有出现。问题描述通常如下:从扑克牌中随机抽5张牌,判断是不是一个顺子(即5张牌是否连续)。其中,2~10为数字本身,A为1,J为11,Q为12,K为13,大小王(用0表示)可以看作任意数字。您需要实现一个函数,根据输入的5张牌的数字数组,返回是否能够组成顺子。

解决思路

1. 排序数组:首先对数组进行排序,以便于处理。

2. 统计大小王数量:统计数组中0的个数,这些可以作为万能牌。

3. 检查重复非零牌:如果非零牌有重复,则无法组成顺子,直接返回false。

4. 计算间隔:计算非零牌之间的间隔总数(即相邻牌之间的数字差值减1之和)。如果间隔总数小于或等于大小王的数量,则可以组成顺子;否则不能。

代码示例(Python)

以下是一个Python实现的示例代码,适用于牛客网的编程环境:

python

def IsContinuous(numbers):

if not numbers or len(numbers) != 5:

return False

numbers.sort

悟空德州俱乐部

zero_count = numbers.count(0) # 统计大小王数量

gap = 0

# 从第一个非零牌开始遍历

for i in range(zero_count, len(numbers)

  • 1):
  • if numbers[i] == numbers[i + 1]: # 有重复非零牌

    扑克牌顺子判断的几种思路解析

    return False

    gap += numbers[i + 1]

  • numbers[i]
  • 1 # 计算间隔
  • return gap

    测试用例

  • 输入:`[1,3,2,5,4]` → 输出:`True`(连续)
  • 输入:`[0,0,1,2,5]` → 输出:`True`(大小王填补了缺失的3和4)
  • 输入:`[0,0,1,2,6]` → 输出:`False`(间隔太大,大小王不够)
  • 输入:`[0,0,1,1,2]` → 输出:`False`(有重复非零牌)
  • 您可以根据需要在牛客网上提交类似代码。如果您使用其他语言(如Java或C++),思路类似,只需调整语法即可。如果有具体问题或需要其他帮助,请提供更多细节!