剑指offer. 61 扑克牌顺子
题目描述:
5张牌,把A看作1,J为11,Q为12,K为13。大小王可以看作任何数(在vector里面是0),如果能组成顺子,返回true,否则返回false
解题思路:
顺子必须满足两个条件
1. 除0外没有重复的数
2. 不算0 的最大数-最小数< 5
代码:
class Solution {
public:
bool IsContinuous( vector<int> numbers ) {
if(numbers.size() != 5) return 0;
int count[14]={0};//记录每个元素出现的次数;以numbers中的元素作为下标(最大K,对应13)
int len=numbers.size();
int max=INT_MIN;
int min=INT_MAX;
for(int i=0;i<len;++i)
{
count[numbers[i]]++;
if(numbers[i]==0) continue;
if(count[numbers[i]]>1) return 0;
if(numbers[i]>max) max=numbers[i];
if(numbers[i]<min) min=numbers[i];
}//end for
return max-min<5;
}//end IsContinuous()
};