题目
从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。
思路
不使用排序,理论上除0之外,五张牌只要有重复就不可能是顺子,故先排除。
然后就是判断最大最小值,如果最大值-最小值+1 小于等于5的话,就是顺子,否则肯定也组不成顺子
代码
class Solution {
public:
bool isStraight(vector<int>& nums) {
int max = 0;
int min = 14;
bool a[14] = {false};
for(int i = 0;i < 5;i++){
if(nums[i] == 0)
continue;
if(nums[i] > max)
max = nums[i];
if(nums[i] < min)
min = nums[i];
if(a[nums[i]]){
return false;
}
a[nums[i]] = true;
}
if(max - min + 1 <= 5)
return true;
else
return false;
}
};