题目:从扑克牌中随机抽取5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,大王和小王可以堪称任意数字。
思路:1、统计数字中0的个数n
2、统计排序之后相邻数字之间的空缺总数m,如果m<=n,那么是顺子,否则不是
注意:如果非0数字重复出现,则 不是连续的。
代码:
import java.util.Arrays;
public class Solution {
public boolean isContinuous(int [] numbers) {
if(numbers==null||numbers.length<5){
return false;
}
Arrays.sort(numbers);
//统计0的数量
int count=0;
for(int number:numbers){
if(number==0)
count++;
}
//使用0不全不连续的顺子
for (int i=count;i<numbers.length-1;i++){
if(numbers[i+1]==numbers[i])
return false;
count-=numbers[i+1]-numbers[i]-1;
}
return count>=0;
}
}