判断随机扑克牌是否为顺子
(牛客网—牛客题霸算法篇—NC63)
题目描述
从扑克牌中随机五张扑克牌,来判断一下是不是顺子。
有如下规则:
- A为1,J为11,Q为12,K为13,A不能视为14
- 大、小王为 0,0可以看作任意牌
- 如果给出的五张牌能组成顺子(即这五张牌是连续的)就输出true,否则就输出false。
4.数据保证每组5个数字,每组最多含有4个零,数组的数取值为 [0, 13]
思路
Java实现
先将数组进行从小到大的排序。
统计0的个数。
判断:如果相邻的两个数相等,则一定不是顺子,返回false;如果相邻的两个数字只差不是1,则需要0来作为顺子中的替补。
代码实现
public class Solution {
//快速排序
public boolean IsContinuous(int [] numbers) {
int num=0;
for(int i=0;i<numbers.length;i++){
for(int j=i;j<numbers.length;j++){
if(numbers[i]>numbers[j]){
int temp=numbers[i];
numbers[i]=numbers[j];
numbers[j]=temp;
}
}
}
for(int i=1;i<numbers.length;i++){
if(numbers[i-1]==0){
num++;
}else{
if(numbers[i-1]==numbers[i])
return false;
if(num!=0&&(numbers[i-1]+1)!=numbers[i]){
num=num-(numbers[i]-numbers[i-1])+1;
if(num<0)
return false;
}else if((numbers[i-1]+1)!=numbers[i]){
return false;
}
}
}
return true;
}
}