【剑指offer】61、扑克牌中的顺子

题目

从扑克牌中随机抽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;
    }

猜你喜欢

转载自www.cnblogs.com/shiganquan/p/9351713.html