题目描述:
从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。
//方法1:排序+遍历
/*
首先需要将手中的牌排序,然后统计0的个数,如果这些牌中除0之外有别的数相等,则不可能为顺子;
统计牌中的差值,如果不够用来补零的,则不可能为顺子。
*/
bool IsContinuous( vector<int> numbers )
{
if(numbers.empty())
return false;
int len=numbers.size();
int count=0;//0的个数
int temp=0;//差值
//进行排序
sort(numbers.begin(),numbers.end());
for(int i=0;i<len-1;i++)
{
if(numbers[i]==0)
{
count++;
continue;
}
if(numbers[i]==numbers[i+1])
{
return false;
}
}
temp=(numbers[len-1]-numbers[count]-1)-(len-1-count-1);//应该有(numbers[len-1]-numbers[count]-1)个数,已经有 (len-1-count-1)个数
return (temp<=count);
}