首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【每日leetcode】扑克牌中的顺子

题目

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

示例 1:

输入: [1,2,3,4,5]输出: True

示例 2:

输入: [0,0,1,2,5]输出: True

限制:

数组长度为 5

题解

不排序方式

您不妨先思考一个这样的问题:有一串连续的数字(无重复),这串数字中最大值为 m, 最小值为 n ,问你这串数字中一共有多少个数字?

答案:

m - n + 1

同样,如果我们能够知道 5 张扑克牌中的最大值 maxValue 和最小值 minValue,那我们就知道,要使它为顺子需要 张牌。

在查找 maxValue 和 minValue 过程中,跳过大小王 0 。

如果 ,说明题目给的 5 张牌不足以构成顺子,返回 false

即使里面有大小王,也不够用来填补使它构成顺子。

如果 maxValue - minValue + 1

里面的大小王填补在合适位置即可。

同时,我们再定义一个标志数组判断是否有重复数字,发现重复数字直接返回 false 即可。

代码

JS

Java

Python

C++

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210309A0FD4Y00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券