題目描述:
從撲克牌中隨機抽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;
}