题解 | #扑克牌顺子#
扑克牌顺子
http://www.nowcoder.com/practice/762836f4d43d43ca9deb273b3de8e1f4
- 用数组来记录出现的牌的次数;
- 记录五张牌中的最大最小值,差值>=5则错误。
- 时间复杂度O(n)|空间复杂度O(n)
class Solution {
public:
bool IsContinuous( vector<int> numbers ) {
if(numbers.size()<5) return false;
int minum=15,maxum=0;
int mat[14]={0};//数组记录出现的牌的次数
for(int i=0;i<numbers.size();++i){
if(numbers[i]==0) continue;//不需要标记0,遇到就跳过
++mat[numbers[i]];
if(mat[numbers[i]]>1) return false;//重复出现牌就返回false
maxum=max(maxum,numbers[i]);//记录最大
minum=min(minum,numbers[i]);//记录最小值
}
if(maxum-minum>=5) return false;//最大最小值的差值必须小于5,否则为false
return true;
}
};