扑克牌中的顺子
剑指 Offer 61. 扑克牌中的顺子
题目说明
从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。
数组长度为 5
数组的数取值为 [0, 13] .
示例
例1
1 | 输入: [1,2,3,4,5] |
例2
1 | 输入: [0,0,1,2,5] |
笔者理解
此题是一道算法问题。
解法
当笔者阅读完此题后,发现此题是一道挺有意思的题目,读者们遍历一下扑克的分发可能情况就不难发现,有无大小王都可以算在一个情况里面,即发放的牌中的最大值和最小值的差值要小于5(不计算大小王及排除重复牌),一旦重复发放一张牌就构不成5张顺子了,而除去重复牌和是否有大小王的情况下,我们只需要讨论剩下牌即可。
让我们来看看具体如何实现的吧。
实现
1 | public boolean isStraight(int[] nums) { |
时间和空间效率都还行,可见此解法还比较适合此题;
总结
本题是剑指offer的一道算法题,感兴趣的朋友都可以去尝试一下,此题还有其他的解法,朋友们可以自己逐一尝试。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 徐年の博客!







