题目
从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。
2~10为数字本身,A为1,J为11,Q为12,K为13,大小王可以看做任意数字。
为了方便,大小王均以0来表示,并且假设这副牌中大小王均有两张。
样例1
输入:[8,9,10,11,12]
输出:true
样例2
输入:[0,8,9,11,12]
输出:true
解法:模拟
顺子的条件:
- 没有连续两张牌一样(对子)
连续两张牌之间空缺的牌总数不超过0的数目
class Solution {
public:
bool isContinuous( vector<int> numbers ) {
if (numbers.size() != 5) return false;
sort(numbers.begin(), numbers.end());
int cnt = 0;
for (int i = 0; i < numbers.size(); i++) {
if (numbers[i] == 0) cnt++;
else if (i && numbers[i - 1]) {
if (numbers[i] == numbers[i - 1]) return false;
cnt -= numbers[i] - numbers[i - 1] - 1;
if (cnt < 0) return false;
}
}
return true;
}
};