题意:
        现在有2副扑克牌,从扑克牌中随机五张扑克牌,我们需要来判断一下是不是顺子。
    有如下规则:
        1. A为1,J为11,Q为12,K为13,A不能视为14
        2. 大、小王为 0,0可以看作任意牌
        3. 如果给出的五张牌能组成顺子(即这五张牌是连续的)就输出true,否则就输出false。
        4.数据保证每组5个数字,每组最多含有4个零,数组的数取值为 [0, 13]

方法:
计数排序

思路:
        依据题意,0可以看做任意数,(即免死金牌),因此要统计0的个数。
        首先,遍历一遍数组,统计0的个数和寻找除0外的最小值,并判断某值是否存在;
        
vis[numbers[i]]=1;//判断值是否存在
        最后,从除0外的最小值开始遍历5个连续数,判断是否组成顺子。
        0可以看做任意数,因此当缺少某值时可以用0代替。
        如果某值不存在且0的个数用完了,则返回false;
        否则,返回true。

    


class Solution {
public:
    int vis[15]={0};
    bool IsContinuous( vector<int> numbers ) {
        
        int n=numbers.size();
        int cnt=0;//统计0的个数
        int mi=15;//寻找除0外的最小值
        for(int i=0;i<n;i++){
            if(numbers[i]==0){
                cnt++;
            }else{
                vis[numbers[i]]=1;//判断值是否存在
                mi=min(mi,numbers[i]);
            }
        }
        for(int i=mi;i<mi+5;i++){//从除0外的最小值开始遍历5个连续数,判断是否组成顺子
            if(vis[i]==0){//如果某值不存在且0的个数用完了,则返回false
                if(cnt==0){
                    return false;
                }
                cnt--;
            }
        }
        return true;
    }
};


时间复杂度:
空间复杂度: