【LeetCode & 劍指offer刷題】數組題14:61 撲克牌中的順子
阿新 • • 發佈:2019-01-05
.net pac mil ace height 數字 emp sco 目錄
1、排序
2、計算所有相鄰數字間隔總數
3、計算0的個數
4、如果2、3相等,就是順子
5、如果出現對子,則不是順子
*/
class Solution
{
public:
bool IsContinuous( vector<int> numbers )
{
if(numbers.empty()) return false;
int num_of_zero = 0;
int num_of_interval = 0;
sort(numbers.begin(), numbers.end()); //排序
for(int i = 0; i<numbers.size()-1; i++) //註意這裏是0~n-2的範圍,因為後面需要計算a[i+1]
{
//統計癩子數量
if(numbers[i] == 0)
{
num_of_zero++;
continue; //繼續循環
}
//如果存在對子,直接返回
if(numbers[i] == numbers[i+1])
return false;
//統計間隔數量
num_of_interval += numbers[i+1] - numbers[i] - 1;
}
if(num_of_zero >= num_of_interval) return true;
else return false;
}
};
//10、J、Q、K、A(10 11 12 13 1)本題返回false,嚴格來說應該做判斷
【LeetCode & 劍指offer 刷題筆記】目錄(持續更新中...)
61 撲克牌中的順子
從撲克牌中隨機抽 5 張牌,判斷是不是順子,即這 5 張牌是不是連續的。 2-10 為數字本身,A 為 1,J 為 11,Q 為 12,K 為 13,而大小王可以看成任意的 數字。(大小王最多4張) 思路: 1、首先我們應該關註的是大小王等特殊字符,由於可以當成任意的數字,所有當成0處理。 2、把數組排序,再統計數組中0的個數 3、統計排序之後的數組中相鄰數字之間的空缺總數。 4、數組中的非0數字重復出現,則該數組是不連續的。 5、如果空缺的總數小於或者等於0的個數,那麽這個數組就是連續的,反之則不連續 /*
【LeetCode & 劍指offer刷題】數組題14:61 撲克牌中的順子