题目:扑克牌顺子
要求:从扑克牌中抽出5张牌,其中大小王可以代表任意牌,A代表1,J代表11, Q代表12, K代表13,判断抽出的五张牌是不是顺子,如 4 6 8 0 0 是顺子,返回true
技巧: 如果五张牌里面含有四个以上(含四个)大小王,那就一定是顺子, 如 3 0 0 0 0
class Solution { public: bool IsContinuous( vector<int> numbers ) { } };
解题代码:
class Solution { public: static bool cmp(int a,int b){ return a < b; } bool IsContinuous(vector<int> numbers) { if(numbers.size() != 5) return false; // 对numbers进行排序 sort(numbers.begin(), numbers.end(), cmp); int numOfZero = 0; int numOfBlank = 0; // 统计0的个数 for(int i = 0; i < numbers.size(); i++){ if(numbers[i] == 0) numOfZero++; } if(numOfZero == 4 || numOfZero == 5) return true; // 统计空缺的个数 for(int i = numOfZero; i < numbers.size()-1; i++){ int temp = numbers[i+1] - numbers[i]; if(temp != 1) numOfBlank = numOfBlank + temp - 1; } return numOfZero == numOfBlank; } };