【Java】撲克牌中的順子

題目描述

從撲克牌中隨機抽5張牌,判斷是不是一個順子,即這5張牌是不是連續的。2~10爲數字本身,A爲1,J爲11,Q爲12,K爲13,而大、小王爲 0 ,可以看成任意數字。A 不能視爲 14。

示例 1:

輸入: [1,2,3,4,5]
輸出: True

示例 2:

輸入: [0,0,1,2,5]
輸出: True

限制:

數組長度爲 5 

數組的數取值爲 [0, 13] .

解題思路

1、這道題考慮最大最小值其實不太方便,因爲有了大小王的存在,最大最小的差不一定就小於5

2、可以考慮排序後兩兩比較,如果是大小王,就記錄大小王的個數,如果後面一個比前面一個大於1,那麼說明需要大小王去填

3、最後判斷大小王的個數夠不夠填

class Solution {
    public boolean isStraight(int[] nums) {
        Arrays.sort(nums);
        int joker = 0;
        int needJoker = 0;
        for(int i = 0;i < nums.length-1;i++){
            if(nums[i] == 0){
                joker++;
                continue;
            }else if(nums[i] == nums[i+1]){
                return false;
            }else {
                needJoker += nums[i+1] - nums[i] - 1;
            }
        }
        return joker >= needJoker;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章