剑指Offer(Java实现)扑克牌顺子
生活随笔
收集整理的這篇文章主要介紹了
剑指Offer(Java实现)扑克牌顺子
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
撲克牌順子
題目描述
LL今天心情特別好,因為他去買了一副撲克牌,發(fā)現(xiàn)里面居然有2個大王,2個小王(一副牌原本是54張_)…他隨機從中抽出了5張牌,想測測自己的手氣,看看能不能抽到順子,如果抽到的話,他決定去買體育彩票,嘿嘿!!“紅心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是順子…LL不高興了,他想了想,決定大\小 王可以看成任何數(shù)字,并且A看作1,J為11,Q為12,K為13。上面的5張牌就可以變成“1,2,3,4,5”(大小王分別看作2和4),“So Lucky!”。LL決定去買體育彩票啦。 現(xiàn)在,要求你使用這幅牌模擬上面的過程,然后告訴我們LL的運氣如何, 如果牌能組成順子就輸出true,否則就輸出false。為了方便起見,你可以認為大小王是0。
解題思路
(1)用數(shù)組記錄五張撲克牌,并將數(shù)組調(diào)整為有序的;
(2)判斷0出現(xiàn)的次數(shù) >= 順子的差值:
? 若為真,則為順子;若為假,則不為順子;
注釋:當按序排列的5張牌出現(xiàn)差值時,只有通過大小王才能進行“補救”,若大小王的張數(shù)(即0出現(xiàn)的次數(shù))大于或等于所有牌的差值總和才能成功“補救”,組成順子,否則不成順子。
代碼實現(xiàn)
import java.util.*;public class Solution {public boolean isContinuous(int [] numbers) {if (null == numbers || 0 == numbers.length) {return false;}int count = 0;int diff = 0;Arrays.sort(numbers);for (int i = 0; i < numbers.length - 1; i++) {if (0 == numbers[i]) {count ++;continue;}if (numbers[i] != numbers[i+1]) {diff += numbers[i+1] - numbers[i] - 1;} else {return false;}}if (count >= diff) {return true;}return false;} }總結(jié)
以上是生活随笔為你收集整理的剑指Offer(Java实现)扑克牌顺子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剑指Offer(Java实现)重建二叉树
- 下一篇: 剑指Offer(Java实现)删除链表中