剑指 offer 61 扑克牌中的顺子(Set + max - min < 5)

1 题目描述

剑指 offer 61 扑克牌中的顺子(Set + max - min < 5)_第1张图片

 

2 算法思路

思路:

  • 一个顺序,例如,3,4,5,6,7,那么肯定有max - min < 5
  • 因此再添加元素时,只要保证添加的元素不是重复的,且max - min < 5即可
  • 接下来讨论大王出现的次数,

算法;

  1. 遍历5个数
  2. 遇到大小王直接跳过
  3. 遇到数字,添加进set,更新max,min
  4. 最后判断max - min <5
    1. 满足,返回true
    2. 不满足,返回false

 

3 代码

class Solution {
    public boolean isStraight(int[] nums) {
        Set set = new HashSet<>();
        int max = 0;
        int min = 14;
        for(int num : nums){
            if(num == 0)
                continue;
            max = Math.max(max,num);
            min = Math.min(min,num);
            if(set.contains(num))
                return false;
            set.add(num);
        }
        return max - min < 5;
    }
}

4 提交结果

剑指 offer 61 扑克牌中的顺子(Set + max - min < 5)_第2张图片

 

你可能感兴趣的:(剑指 offer 61 扑克牌中的顺子(Set + max - min < 5))