标签: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
标签:style class blog code color strong
原文地址:http://www.cnblogs.com/wwwjieo0/p/3810904.html