要判断是否顺子,的满足俩个要求。
1:没有对子,即重复的数字
2 :最大和最小值相差不超过4,缺失数字的个数比0的个数等于或少于;
即先对数组排序,然后在统计其中0的个数;最后算差值。
代码:
bool IsContinuous( vector<int> numbers ) {
int length=numbers.size();
if(length==0)
return false;
sort(numbers.begin(),numbers.end());
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;
}
第二种:
bool IsContinuous( vector<int> numbers ) {
if(numbers.size()!=5) return false;
sort(numbers.begin(),numbers.end());
int i=0;
while(numbers[i]==0) i++;
if(numbers[4]-numbers[i]>4) return false;
for(int j=i;j<4;j++){
if(numbers[j]==numbers[j+1]) return false;
}
return true;
}