剑指offer61扑克牌中的顺子

Posted shiganquan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer61扑克牌中的顺子相关的知识,希望对你有一定的参考价值。

题目

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

 

以上是关于剑指offer61扑克牌中的顺子的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode(剑指 Offer)- 61. 扑克牌中的顺子

#yyds干货盘点#剑指 Offer 61. 扑克牌中的顺子

剑指 Offer 61. 扑克牌中的顺子

剑指offer61扑克牌中的顺子

算法剑指 Offer 61. 扑克牌中的顺子 重刷

每日一题 - 剑指 Offer 61. 扑克牌中的顺子