1. 程式人生 > >【劍指offer】61、撲克牌中的順子

【劍指offer】61、撲克牌中的順子

一個 nbsp sort int con turn 判斷 個數 是否

題目

從撲克牌中隨機抽5張牌,判斷是不是一個順子。2~10為本身,A是1,J,Q,K分別是11,12,13。大小王百搭

思路

關鍵就是大小王百搭。把大小王都當作0。

我們先統計出數組中0的個數

然後將數組排序,統計不連續的空缺總數

最後判斷0的個數是否比空缺總數大

class Solution {
public:
    bool IsContinuous( vector<int> numbers ) {
        if (numbers.size() != 5 )
            return false;
        int length = numbers.size();
        sort(numbers.begin(), numbers.end());
        
int num_space = 0, num_zero = 0; for (int i = 0; i < length; i++) { if (numbers[i] == 0) num_zero++; } for (int i = num_zero; i < length - 1; i++) { if (numbers[i+1] == numbers[i]) return false;
// 統計空缺總數,如果是連續的,則為0 num_space += numbers[i+1] - numbers[i] - 1; } return (num_space > num_zero)?false:true; }

【劍指offer】61、撲克牌中的順子