zoukankan      html  css  js  c++  java
  • 面试题44:扑克牌的顺子

    题目描述

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

    题目分析

    剑指Offer(纪念版)P227

    代码实现

    bool IsContinuous(int* numbers, int length)
    {
        if(numbers == NULL || length < 1)
            return false;
     
        qsort(numbers, length, sizeof(int), compare);
     
        int numberOfZero = 0;
        int numberOfGap = 0;
     
        // 统计数组中0的个数
        for(int i = 0; i < length && numbers[i] == 0; ++i)
            ++ numberOfZero;
    
        // 统计数组中的间隔数目
        int small = numberOfZero;
        int big = small + 1;
        while(big < length)
        {
            // 两个数相等,有对子,不可能是顺子
            if(numbers[small] == numbers[big])
                return false;
    
            numberOfGap += numbers[big] - numbers[small] - 1;
            small = big;
            ++big;
        }
     
        return (numberOfGap > numberOfZero) ? false : true; 
    }
    
    int compare(const void *arg1, const void *arg2)
    {
       return *(int*)arg1 - *(int*)arg2;
    }
    

      

  • 相关阅读:
    「SPOJ10707」Count on a tree II
    UVA 11021 /概率
    power oj/2360/Change
    POJ1613 147/思维题
    Power oj2498/DP/递推
    HDU4815/计数DP
    444A/CF
    观光公交noip<贪心>
    2014 Shanghai Invitation Contest
    POJ1734/Floyd求最小环
  • 原文地址:https://www.cnblogs.com/xwz0528/p/4978016.html
Copyright © 2011-2022 走看看