[leetCode]剑指 Offer 61. 扑克牌中的顺子

在这里插入图片描述

解法

class Solution {
    public boolean isStraight(int[] nums) {
        if (nums == null || nums.length == 0 ) return false;
        // 1.将数组排序
        Arrays.sort(nums);
        // "0" (大小王)的个数
        int numberOfZero = 0;
        // 缺失数字的个数
        int numberOfGap = 0;
        // 2. 统计 “0” 的个数
        for (int i = 0; i < nums.length && nums[i] == 0; i++) 
            ++numberOfZero;
        // 3.统计缺失数字的个数
        int small = numberOfZero;
        int big = small + 1;
        while(big < nums.length) {
            // 出现了“对子”,不可能有顺子
            if (nums[small] == nums[big])
                return false;
            numberOfGap += nums[big] - nums[small] - 1;
            small = big;
            ++big;
        }
        // 缺失的数字个数比大小王个数多则无法构成顺子
        return (numberOfGap > numberOfZero) ? false : true;
    }
}
posted @ 2020-09-25 07:38  消灭猕猴桃  阅读(46)  评论(0编辑  收藏  举报