zoukankan      html  css  js  c++  java
  • 【剑指offer】扑克牌的顺子,C++实现

    # 题目

    image

    # 思路

    顺子满足的条件:

    • 数组长度必须为5
    • 除0外没有重复的牌(0表示大小王)
    • 顺子中最大值和最小值的差值小于5

    # 代码

    #include <iostream>
    #include <vector>
    using namespace std;
    
    class Solution {
    public:
        bool IsContinuous( vector<int> numbers )
        {
            // 数组长度必须为5
            if(numbers.size() != 5) return 0;
    
            // 统计每个元素出现的次数;以numbers中的元素作为下标(最大K,对应13)
            int count[14]={0};
    
            // 辅助变量
            int len=numbers.size();
            int max=-1;
            int min=14;
            
            for(int i=0;i<len;++i)
            {
                count[numbers[i]]++;
                if(numbers[i]==0) continue;       // 大小王可以重复
                if(count[numbers[i]]>1) return 0; // 其他牌不可以重复
    
                if(numbers[i]>max) max=numbers[i];// 更新max
                if(numbers[i]<min) min=numbers[i];// 更新min
            }
            if(max-min<5) return 1;
    
            return 0;
        }
    };
    
    int main()
    {
        vector<int> numbers = {1,2,3,5,0};
        Solution solution;
        cout<<solution.IsContinuous(numbers)<<endl;
        return 0;
    }
  • 相关阅读:
    蓝奏云的链接打不开
    数据链路层
    markdown(md)
    物理层
    计算机网络概述
    86五笔学习笔记
    Ubuntu初次使用的问题
    Hello Word!
    快速创建Flask Restful API项目
    Ubuntu环境下部署Django+uwsgi+nginx总结
  • 原文地址:https://www.cnblogs.com/wanglei5205/p/9015534.html
Copyright © 2011-2022 走看看