題目描述
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,
思路
bitmap計數排序的思想,大資料排序去重,
時間復雜度O(n),空間復雜度O(1)
代碼
public class Solution {
//bitmap
public boolean isContinuous(int [] numbers) {
if(numbers == null || numbers.length != 5) return false;
int bitmap = 0;
int num = 0;
int max = -1;
int min = 14;
for(int i = 0; i < numbers.length; i++) {
num = numbers[i];
if(num == 0){
continue;
} else if(num < 0 || num > 13) {
return false;
} else if((bitmap >> num & 1) == 1) {
return false;
} else {
if(num > max) {
max = num;
}
if(num < min) {
min = num;
}
if(max - min > 4) {
return false;
}
bitmap |= (1 << num);
}
}
return true;
}
}
筆記
無
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/205845.html
標籤:其他
上一篇:翻轉單詞順序列
