题目描述
从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。
2~10为数字本身,A为1,J为11,Q为12,K为13,大小王可以看做任意数字。
为了方便,大小王均以0来表示,并且假设这副牌中大小王均有两张。
样例
输入:[8,9,10,11,12]
输出:true
C++ 代码
class Solution {
public:
bool isContinuous( vector<int> numbers ) {
if(numbers.empty()) return false;
sort(numbers.begin(), numbers.end());
//记录最小的牌面数字
int min = numbers[count(numbers.begin(), numbers.end(), 0)];
//含有相同点数的牌不可能成顺子
for (int i = 0; i <= 4; i ++)
if(numbers[i] == numbers[i + 1] && numbers[i] != 0) return false;
//因为有四个王,能成顺子的组合中,非王牌的最大点和最小点的差距必然小于或等于4
if (numbers[4] - min <= 4) return true;
else return false;
}
};