题目

July 7, 2021 · View on GitHub

从扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这 5 张牌是不是连续的。

2∼10 为数字本身,A 为 1,J 为 11,Q 为 12,K 为 13,大小王可以看做任意数字。

为了方便,大小王均以 0 来表示,并且假设这副牌中大小王均有两张。

样例1

输入:[8,9,10,11,12]

输出:true

样例2

输入:[0,8,9,11,12]

输出:true

参考答案

class Solution {
public:
    bool isContinuous( vector<int> numbers ) {
        if(numbers.size()!=5)
            return false;
        sort(numbers.begin(), numbers.end());
        int zerocnt = 0;
        for(int i = 0;i<4;i++){
            if(numbers[i]==0)
                zerocnt += 1;
            else{
                if(numbers[i+1]-numbers[i]-1>zerocnt)//相邻数字间隔大于0的个数
                    return false;
                if(numbers[i+1]==numbers[i])//有对子
                    return false;
                zerocnt -= numbers[i+1] - numbers[i]-1;
            }
        }
        return true;
    }
};