美文网首页
<剑指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