码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer (44) 扑克牌的顺子

时间:2014-06-27 11:12:59      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   color   strong   

题目:从扑克牌中随机抽取5张牌,判断是不是一个顺子,即这5张牌是不是连续的

2-10为数字本身,A为1,J为11,Q为12,K为13,大小王可以替换任意数字

 

题解分析:

step1. 首先大小王看作0,与其他数字都区分开

step2. 对这5张牌排序

step3. 统计5张牌中0的个数和 相邻数字之间的空缺总数,因为 我们可以把0替换掉空缺所需的数

bool IsContinuous(std::vector<int>& num)
{
    if (num.size() != 5) return false;
    std::sort(num.begin(), num.end());
    int zeroNum = std::count(num.begin(), num.end(), 0);

    int gapNum = 0;
    for (int i = 0; i < num.size() - 1; ++i) {
        if (num.at(i) == 0) continue;      // 直接跳过0
        if (num.at(i) == num.at(i + 1)) {  // 有对子
            return false;
        }
        gapNum += (num.at(i + 1) - num.at(i) - 1);
    }
    if (gapNum <= zeroNum) {
        return true;
    } else {
        return false;
    }
}

 

剑指offer (44) 扑克牌的顺子,布布扣,bubuko.com

剑指offer (44) 扑克牌的顺子

标签:style   class   blog   code   color   strong   

原文地址:http://www.cnblogs.com/wwwjieo0/p/3810904.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!