面試題:撲克牌中的順子
阿新 • • 發佈:2019-02-15
從撲克牌中隨機抽5張牌,判斷是不是一個順子,即這5張牌是不是連續的。2~10為數字本身,A為1,J為11,Q為12,K為13,而大小王可以看成任意數字。
思路:如果一副牌裡含有對子,則不可能是順子。
bool IsContinuous(int* numbers,int length)
{
if(numbers==nullptr||length<1)
return false;
qsort(numbers,length,sizeof(int),compare);
int numberOfZero=0;
int numberOfGap=0;
for(int i=0;i<length&&numbers[i]==0;++i)
++numberOfZero;
int small=numberOfZero;
int big=small+1;
while(big<length)
{
if(numbers[small]==numbers[big])
return
false;
numberOfGap+=numbers[big]-numbers[small]-1;
small=big;
++big;
}
return (numberOfGap>numberOfZero)?false:true;
}
int compare(const void *arg1,const void *arg2)
{
return *(int*)arg1-*(int*)arg2;
}