剑指offer刷题————扑克牌顺子

问题重述:

题目:从扑克牌中随机抽取张牌,判断是不是一个顺子,即这张牌是不是连续的,2~10为数字本身,A为1,J为11,Q为12,K为13,而大王小王可以看成任意的数字。

思路解析:

首先我们认为大王和小王为数字0,首先我们统计0的个数,然后将数组排序,并且判断中间缺的数的个数比0的个数多还是少,如果比0的个数多,那么就不是顺子,具体思路可以参见下面代码。

代码实现:

class Solution {
public:
    bool IsContinuous( vector numbers ) {
        if(numbers.size()!=5)
            return false;
        
        int count_0 = 0;
        auto it = numbers.begin();
        for(;it!=numbers.end();++it)
        {
            //统计0和重复的
            if(*it==0)
            {
                 ++count_0;
                continue;
            }
               
            if(find(it+1,numbers.end(),*it)!=numbers.end())
                return false;
        }
        //奖number进行排序
        int dif = 0;
        sort(numbers.begin(),numbers.end(),less());
        for(int i = 1;icount_0)
            return false;
        return true;
        
    }
};

 

你可能感兴趣的:(刷题)