剑指 Offer 61. 扑克牌中的顺子(简单)Java

题目描述

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

示例

在这里插入图片描述

思路

先定义最大值和最小值
如果有相同的,直接返回 false
遇到 0 直接跳过,不参与最大值最小值
最后如果 max - min <= 4,则代表为顺子
小于 4 的是因为可能有王的存在

代码

class Solution {
    public boolean isStraight(int[] nums) {
        HashSet set = new HashSet();
        int min = 14;
        int max = 0;
        for(int i = 0;i<5;i++){
            if(nums[i]==0){
                continue;
            }
            if(set.add(nums[i])){
                max = Math.max(max,nums[i]);
                min = Math.min(min,nums[i]);
            }else{
                return false;
            }
        }
        if(max - min <= 4){
            return true;
        }else{
            return false;
        }
    }
}

结果

请添加图片描述


版权声明:本文为weiyi_1原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。