从扑克牌中随机抽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; }