面试题61:扑克牌中的顺子

题目

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

解题思路

  1. 把数组排序
    2)统计数组中0的个数
  2. 统计排序后数组中相邻数字之间的空缺总数。若空缺总数≤0的个数,那么这个数组是连续的,反之不是连续的
  3. 若数组中国非0数字重复出现,则该数组不是连续的。

代码

class Solution{
  public:
    bool isContinuous(int *number,int length)
    {
        for(int i = 0;i<length;i++)
        {
            for(int j = length-1;j>i;j--)
            {
                if(number[i]>number[j])
                {
                    int temp = number[i];
                    number[i]=number[j];
                    number[j]=temp;
                }
            }
        }
        
        int zero_sum = 0;
        int empty_sum = 0;
        for(int i =0;i<length-1;i++)
        {
            if(number[i] == 0)
            {
                zero_sum++;
            }
            else if((number[i]+1) != number[i+1] )
            {
                empty_sum++;
            }
        }
        // return zero<empty?0:1;
        if(zero_sum >= empty_sum)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
};

完整代码Github

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容