剑指Offer.62 扑克牌中的顺子

    科技2024-10-26  47

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

    解题思路

    由题目我们知道, 除了0(大小王)之外必须没有重复数字, 并且最大最小值的差值必须小于 5 因为顺子中不含重复数字, 顺子中两个牌差值最大为4

    代码

    class Solution { public boolean isStraight(int[] nums) { // 除了0之外没有重复的数字 // 最大值 - 最小值 < 5 HashSet<Integer> set = new HashSet<>(); int max = 0, min = 14; for (int num : nums) { if (num == 0) { continue; } if (set.contains(num)) { return false; } set.add(num); if (num > max) { max = num; } if (num < min) { min = num; } if (max - min >= 5) { return false; } } return true; } }
    Processed: 0.010, SQL: 8