acwing 81. 撲克牌的順子

地址 https://www.acwing.com/problem/content/77/spa

從撲克牌中隨機抽5張牌,判斷是否是一個順子,即這5張牌是否是連續的。code

2~10爲數字自己,A爲1,J爲11,Q爲12,K爲13,大小王能夠看作任意數字。blog

爲了方便,大小王均以0來表示,而且假設這副牌中大小王均有兩張。get

樣例1
輸入:[8,9,10,11,12]

輸出:true
樣例2
輸入:[0,8,9,11,12]

輸出:true

解法 插空法 先查看有多少個癩子  若是牌之間不能造成1 的等差序列 就插入一個癩子io

癩子不夠用或者有兩張相同的非癩子的牌 那麼就返回失敗class

class Solution {
public:
    bool isContinuous( vector<int> numbers ) {
        if(numbers.size() != 5) return false;
        sort(numbers.begin(),numbers.end());
        int laiziCount = 0;
        for(int i =0;i < numbers.size();i++){
            if(numbers[i] == 0) laiziCount++;
            else {
                if(i < numbers.size()-1){
                    int diff = numbers[i+1] - numbers[i];
                    if(diff == 0) return false;
                    if(diff == 1 ) continue;
                    laiziCount -= diff; laiziCount++;
                    if(laiziCount <0) return false;
                }
            }
        }
        
        return true;
    }
};
相關文章
相關標籤/搜索