每日算法题之扑克牌顺子

JZ61 扑克牌顺子

描述

现在有2副扑克牌,从扑克牌中随机五张扑克牌,我们需要来判断一下是不是顺子。
有如下规则:
1. A为1,J为11,Q为12,K为13,A不能视为14
2. 大、小王为 0,0可以看作任意牌
3. 如果给出的五张牌能组成顺子(即这五张牌是连续的)就输出true,否则就输出false。
4.数据保证每组5个数字,每组最多含有4个零,数组的数取值为 [0, 13]

具体做法:

将 nums 数组依次装入 set集合,遇到 0 则返回装下一个元素,出现重复元素则返回 false,并在其中记录max,min,最终max-min >= 5的都不是顺子;

代码

package esay.JZ61扑克牌顺子;

import java.util.HashSet;

public class Solution {
    public boolean IsContinuous(int [] numbers) {
        HashSet set = new HashSet<>();
        int min = Integer.MAX_VALUE;
        int max = Integer.MIN_VALUE;

        for (int number : numbers) {
            if (number == 0) continue;

            if (set.contains(number)) {
                return false;
            } else {
                set.add(number);
            }

            max = Math.max(max, number);
            min = Math.min(min, number);
        }

        return max - min < 5;
    }
}


当前文章:每日算法题之扑克牌顺子
文章起源:http://pwwzsj.com/article/dsopdsc.html