[61]扑克牌中的顺子
文章目录
题目
从扑克牌中随机抽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 的个数 k
- 从 k + 1 再次遍历 数组,不能有相等的数【i 和 i-1 不相等】
- 比较 k 位 和 数组最后一位,相差不能超过 4
代码
class Solution {
public:
bool isContinuous( vector<int> numbers )
{
if(numbers.empty()) return false;
sort(numbers.begin(),numbers.end()); // 排序
int k=0; // 0的个数
while(numbers[k]==0) k++;
for(int i=k+1;i<numbers.size();i++) // i = k+1 [从k【i-1】位 开始判断是否相等]
{
if(numbers[i]==numbers[i-1]) // 有相等数
return false;
}
if(numbers.back()-numbers[k]<=4)
return true;
else
return false;
}
};