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
bitmap計數排序的思想,大數據排序去重。大數據
時間複雜度O(n),空間複雜度O(1)code
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; } }
無排序