C语言解扑克牌顺子

解题思路

比如说有五个数1 3 2 4 5,什么情况下能组成顺子呢?首先顺子肯定是牌型不重复(先不考虑0)!既然牌型不可能重复,也就是最大值,最小值差值在5以内。所以梳理一下顺子的充要条件:1.(除0)数字不重复,2.最大值最小值小于5。

 * 
 * @param numbers int整型一维数组 
 * @param numbersLen int numbers数组长度
 * @return bool布尔型
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
int IsContinuous(int* numbers, int numbersLen ) {
    int hash[13]={0};//一个hash表
    int min=13;
    int max=0;
    for(int i=0;i<numbersLen;i++){
        //获取最小值
        if(numbers[i]==0)
            continue;
        if(numbers[i]<min)
            min=numbers[i];
        if(numbers[i]>max)
            max=numbers[i];
            //判断是否重复
        if(hash[numbers[i]]==1)
            return 0;
            //存入hash表
        hash[numbers[i]]=1;
    }
    if(max-min>=5)
        return 0;
    else
        return 1;
}