題目描述
從撲克中隨機抽5張牌,判斷是不是一個順子,即這5張牌是不是連續的。2~10為數字本身,A為1,J為11,Q為12,K為13,而大小王可以認為是任何數字。現在,要求你使用這幅牌模擬上面的過程,然后告訴我們LL的運氣如何。為了方便起見,你可以認為大小王是0。
算法解析:首先我們需要注意的是,0是可以填補空缺的,如果數組中的空缺小于或等于0個個數的話,那么就可以視為這是一個連續數組。同時要注意的是如果有個非0的重復值的話,那么不能稱為連續數組。 依據這些我們可以寫出如下代碼。
代碼如下:
public static boolean isContinuous(int [] numbers) { if (numbers == null || numbers.length != 5){ return false; } Arrays.sort(numbers); int zeroNum = 0; for (int i = 0; i < numbers.length; i++) { if (i != 0 && numbers[i] == numbers[i - 1] && numbers[i] != 0){ //有兩個不為0的數字相同 return false; } if (numbers[i] == 0){ zeroNum ++; } } int emptyNum = emptyNum = numbers[4] - numbers[zeroNum] + 1 - (numbers.length - zeroNum); if (emptyNum <= zeroNum){ return true; } return false; }新聞熱點
疑難解答