如果五张牌是连续的就输出true,否则就输出false。
题目链接
题目思路:
无论对于牌中是否有0的场景,都只需要考虑下列两个问题:
1⃣️扑克牌五连顺子中(最大值-最小值)不能大于4
2⃣️顺子中不能出现重复值:对扑克牌先排序,重复值一定出现在相邻的牌中,使用变量pre保存之前一个牌的数值,每次和后面的牌进行比较。
注意点:
1⃣️sort()函数对数组进行排序,头文件是#include <algorithm >。
2⃣️max的初始值设置为最小值,min的初始值设置为最大值。
代码:
class Solution {
public:
bool IsContinuous( vector<int> numbers ) {
if(numbers.size() == 0) return false;
int min = 14;
int max = 0;
int pre = -1;
sort(numbers.begin(),numbers.end());
for(int i=0;i<numbers.size();i++){
if(numbers[i]<min && numbers[i]>0){
min = numbers[i];
}
if(numbers[i]>max) {
max = numbers[i];
}
if(numbers[i]==pre || max-min>4)return false;
if(numbers[i]!=0){
pre = numbers[i];
}else{
pre = -1;
}
}
return true;
}
};