题目
从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目示例

解题思路
- 因为大小王可以替换为任何数字,所以0可以重复
 - 其他数字不可以重复,因为是顺子
 - 顺子的特征就是最大减去最小的小于5(<=4)
 
难点
- 0可以重复的思考
 - 最大值减去最小值的< 5的思路
 
示例
  public class IsStraight {
    /**
     * 最大减最小,结果小于5 是顺子
     * 除去0元素外,不能有重复的其他数据
     *
     * @param nums
     * @return
     */
    public boolean isStraight(int[] nums) {
        if (Objects.isNull(nums) || nums.length < 5) {
            return false;
        }
        Set<Integer> numSet = new HashSet<>();
        int max = 0;
        int min = 13;
        for (int num : nums) {
            if (num == 0) {
                continue;
            }
            if (numSet.contains(num)) {
                return false;
            }
            max = Math.max(max, num);
            min = Math.min(min, num);
            numSet.add(num);
        }
        return max - min < 5;
    }
}