美文网首页
<剑指Offer>面试题61: 扑克牌中的顺子

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

作者: cb_guo | 来源:发表于2019-02-26 13:44 被阅读0次

题目描述

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

题目解读

  • 剑指Offer 298

代码

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

class Solution {
public:
    bool IsContinuous( vector<int> 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<int> 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<<result<<endl;
}

总结展望

相关文章

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/gbwbyqtx.html