撲克牌的順子

題目描述:

從撲克牌中隨機抽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;
    }
發佈了124 篇原創文章 · 獲贊 11 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章