<剑指Offer>面试题61: 扑克牌中的顺子

题目描述

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

题目解读

  • 剑指Offer 298

代码

#include
#include
#include
using namespace std;

class Solution {
public:
    bool IsContinuous( vector numbers ) {

        if(numbers.size() < 1){
            return false;
        }

        // 排序
        sort(numbers.begin(), numbers.end());

        int zero = 0;
        int gap = 0;
        for(int i=0; i < numbers.size()-1; i++){
            if(numbers[i] == 0){
                zero += 1;
            }else{
                if(numbers[i+1] - numbers[i] - 1 > 0){
                    gap = gap + numbers[i+1] - numbers[i] - 1;
                }

                // 如果是对子,则直接返回 false
                if(numbers[i+1] == numbers[i]){
                    return false;
                }
            }
        }
        return zero < gap ? false : true;
    }
};

int main(){
    Solution ss;
    
    vector numbers;
    // int a[] = {0, 1, 3, 4, 5};
    int a[] = {1, 2, 8, 4, 5};
    for(int i=0; i < 5; i++){
        numbers.push_back(a[i]);
    }
    bool result = ss.IsContinuous(numbers);
    cout<

总结展望

你可能感兴趣的:(<剑指Offer>面试题61: 扑克牌中的顺子)