LL今天心情特別好,由於他去買了一副撲克牌,發現裏面竟然有2個大王,2個小王(一副牌本來是54張^_^)...他隨機從中抽出了5張牌,想測測本身的手氣,看看能不能抽到順子,若是抽到的話,他決定去買體育彩票,嘿嘿!!「紅心A,黑桃3,小王,大王,方片5」,「Oh My God!」不是順子.....LL不高興了,他想了想,決定大\小 王能夠當作任何數字,而且A看做1,J爲11,Q爲12,K爲13。上面的5張牌就能夠變成「1,2,3,4,5」(大小王分別看做2和4),「So Lucky!」。LL決定去買體育彩票啦。 如今,要求你使用這幅牌模擬上面的過程,而後告訴咱們LL的運氣如何, 若是牌能組成順子就輸出true,不然就輸出false。爲了方便起見,你能夠認爲大小王是0。java
本題題目有點長啊,可是仔細分析下來其實就是判斷輸入的這個數組中的數字是否構成一個順子,其中0能夠變成任何數字。數組
public boolean isContinuous(int[] numbers) {
if (numbers == null || numbers.length < 5) {
return false;
}
int[] vis = new int[14];
vis[0] = -5;
int max = -1, min = 14, length = numbers.length;
for (int i = 0; i < length; i++) {
vis[numbers[i]]++;
if (numbers[i] == 0) {
continue;
}
if (vis[numbers[i]] > 1) {
return false;
}
if (numbers[i] > max) {
max = numbers[i];
}
if (numbers[i] < min) {
min = numbers[i];
}
}
return max - min < 5;
}
複製代碼