剑指offer61扑克牌中的顺子
Posted shiganquan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer61扑克牌中的顺子相关的知识,希望对你有一定的参考价值。
题目
从扑克牌中随机抽5张牌,判断是不是一个顺子。2~10为本身,A是1,J,Q,K分别是11,12,13。大小王百搭
思路
关键就是大小王百搭。把大小王都当作0。
我们先统计出数组中0的个数
然后将数组排序,统计不连续的空缺总数
最后判断0的个数是否比空缺总数大
class Solution { public: bool IsContinuous( vector<int> numbers ) { if (numbers.size() != 5 ) return false; int length = numbers.size(); sort(numbers.begin(), numbers.end()); int num_space = 0, num_zero = 0; for (int i = 0; i < length; i++) { if (numbers[i] == 0) num_zero++; } for (int i = num_zero; i < length - 1; i++) { if (numbers[i+1] == numbers[i]) return false; // 统计空缺总数,如果是连续的,则为0 num_space += numbers[i+1] - numbers[i] - 1; } return (num_space > num_zero)?false:true; }
以上是关于剑指offer61扑克牌中的顺子的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode(剑指 Offer)- 61. 扑克牌中的顺子