题目描述:
从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。
2~10为数字本身,A为1,J为11,Q为12,K为13,大小王可以看做任意数字。
为了方便,大小王均以0来表示,并且假设这副牌中大小王均有两张。
样例:
输入:[0,8,9,11,12]
输出:true
分析:
首先统计数字中0的个数,并将不为0的数字放到对应下标处,若该数字重复出现则直接返回false。
然后遍历数组,统计空缺的总数如果小于等于0的个数则返回true,否则为false。
public boolean isContinuous(int [] numbers) {
if(numbers==null||numbers.length==0)
return false;
int []temp=new int[14];
for(int i=0;i<numbers.length;i++) {
if(numbers[i]==0)
temp[0]++;
else {
if(temp[numbers[i]]==0)
temp[numbers[i]]=numbers[i];
else {//说明数字重复了可使用的0要减少一个
return false;
}
}
}//共有几个0
for(int i=1;i<13;i++) {
if(temp[i]!=0) {
int count=1;
while(true) {
i++;
count++;
if(temp[i]==0) {
temp[0]--;
if(temp[0]<0)
return false;
}
if(count==5)
return true;
}
}
}
return true;
}

博客围绕判断从扑克牌随机抽取的5张牌是否为顺子展开。规定2 - 10为数字本身,A为1,J为11,Q为12,K为13,大小王用0表示。给出样例及分析,通过统计0个数、检查数字重复性和空缺总数来判断是否为顺子。
1249

被折叠的 条评论
为什么被折叠?



