劍指Offer 撲克牌順子
/**
* 撲克牌順子
*
* 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。
*/
public class JZ045IsContinuous {
public static boolean isContinuous(int [] numbers) {
if (numbers == null || numbers.length <= 0) {
return false;
}
quickSort(numbers, 0, numbers.length - 1);
int diff = 0;
for (int i = 0; i < numbers.length - 1; i++) {
if (numbers[i] == 0) {
continue;
}
if (numbers[i] != numbers[i + 1]) {
diff += numbers[i + 1] - numbers[i];
} else {
return false;
}
}
if (diff < numbers.length) {
return true;
}
return false;
}
private static void quickSort(int[] numbers, int start, int end) {
if (start < end) {
int index = getIndex(numbers, start, end);
quickSort(numbers, start, index - 1);
quickSort(numbers, index + 1, end);
}
}
private static int getIndex(int[] numbers, int start, int end) {
int key = numbers[start];
while (start < end) {
while (numbers[end] > key && start < end) {
end--;
}
numbers[start] = numbers[end];
while (numbers[start] <= key && start < end) {
start++;
}
numbers[end] = numbers[start];
}
numbers[start] = key;
return start;
}
public static void main(String[] args) {
int[] numbers = {1, 3, 5, 7, 0, 0};
System.out.println(isContinuous(numbers));
}
}
相關文章
- JZ-045-撲克牌順子
- 每日一練(33):撲克牌中的順子
- [每日一題] 第十二題:撲克牌中的順子每日一題
- 劍指offer之順序列印陣列陣列
- 劍指OFFER
- 劍指offer-19:順時針列印矩陣矩陣
- 劍指offer-17:樹的子結構
- 撲克牌速算24 -窮舉(JavaScript)JavaScript
- 劍指 Offer 14- II. 剪繩子 II
- 力扣 - 劍指 Offer 29. 順時針列印矩陣力扣矩陣
- 劍指offer面試題29:順時針列印矩陣面試題矩陣
- 劍指 Offer 29-順時針列印矩陣c++矩陣C++
- 劍指offer導航
- Leetcode劍指offer(八)LeetCode
- 劍指offer16
- 劍指 offer20
- 劍指 offer21
- java程式:簡易撲克牌遊戲Java遊戲
- 力扣 - 劍指 Offer 58 - I. 翻轉單詞順序力扣
- 劍指Offer題解合集
- 【劍指Offer】矩形覆蓋
- 劍指offer——跳臺階
- 六、劍指 Offer(25~29)
- 劍指offer-JavaScript版JavaScript
- 劍指 Offer 14- I. 剪繩子 JavaScript實現JavaScript
- 劍指 Offer 42.連續子陣列的最大和陣列
- 劍指Offer-連續子陣列中的最大和陣列
- Java 簡單實現撲克牌抽象類Java抽象
- SwiftUI:看我展示52張撲克牌,“很快啊!”SwiftUI
- 劍指 Offer 48. 最長不含重複字元的子字串字元字串
- 劍指offer-例題 連續子陣列的最大和陣列
- 《劍指Offer》- 連續子陣列的最大和或最小和陣列
- 劍指offer刷題記錄
- 劍指offer-第2章
- 劍指offer第41~50題
- 劍指 offer(1) -- 陣列篇陣列
- 【劍指offer】【2】字串的空格字串
- 劍指offer—58.翻轉單詞順序列—分析及程式碼(Java)Java