题解 | #扑克牌顺子#
扑克牌顺子
http://www.nowcoder.com/practice/762836f4d43d43ca9deb273b3de8e1f4
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;
}