剑指 Offer 第61题:扑克牌中的顺子

2022-08-15  本文已影响0人  放开那个BUG

1、前言

题目描述

2、思路

检查是否是顺子: 首先应该进行排序,然后统计 0 的个数, 最后统计相邻数字之间的间隔个数。 如果0 的次数 大于等于 间隔的次数,则是顺子,否则不是顺子。另外,如果出现非0外的相同的数,即对子,则不是顺子。 如:{0,1,3,4,5} 中 0 的个数为 1, 间隔个数为 1,则是顺子; {0,1,3,4,6}中 0 的

3、代码

class Solution {
    public boolean isStraight(int[] nums) {
        if(nums == null || nums.length == 0){
            return false;
        }
        int any = 0, sum = 0;
        Arrays.sort(nums);
        for(int i = 0; i < nums.length - 1; i++){
            if(nums[i] == 0){
                any++;
                continue;
            }
            if(nums[i] == nums[i + 1]){
                return false;
            }
            sum += nums[i + 1] - nums[i] - 1;
        }

        return any >= sum;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读