面试题61_扑克牌中的顺子

题目描述

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

题解

题目的意思是判断扑克牌是否连续,大小王可以代替任何数字(就和斗地主中的癞子一样)。

本题中使用0代表大小王,我们可以先对数组排序,计算出大小王的数量。然后再计算数组中数的间隔,看大小王能不能将其填充。如果大小王的数量大于等于间隔的数量,那么代表扑克牌中有顺子;否则扑克牌中没有顺子。

下面是参考代码:

public boolean isContinuous(int[] numbers) {
    if (numbers.length == 0)
        return false;
    Arrays.sort(numbers);
    int kings = 0, totalGap = 0;
    for (int i = 0; i < numbers.length; i++) {
        // 计算大小王的数量
        if (numbers[i] == 0) {
            kings++;
            continue;
        }
        // 计算数的间隔
        if (i < numbers.length-1) {
            int gap = numbers[i+1] - numbers[i] - 1;
            // 如果出现对子,直接返回false
            if (gap == -1)
                return false;
            totalGap += gap;
        }
    }
    return kings >= totalGap;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目描述 从扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这 5 张牌是不是连续的 2~10 为数字本身,A为1...
    cb_guo阅读 3,146评论 0 0
  • 题目:从扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这 5 张牌是不是连续的。2~10 为数字本身,A 为 1...
    孙强Jimmy阅读 4,322评论 0 0
  • 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这五张牌是不是连续的。2~10是数字本身,A为1,J为11,Q为12...
    繁星追逐阅读 1,382评论 0 0
  • 题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_).....
    Max_7阅读 3,214评论 0 0
  • 《剑指offer》刷题笔记。如有更好解法,欢迎留言。 关键字:字符串 题目描述: LL今天心情特别好,因为他去买了...
    ElricTang阅读 1,756评论 0 0

友情链接更多精彩内容