• Leetcode914.X of a Kind in a Deck of Cards卡牌分组


    给定一副牌,每张牌上都写着一个整数。

    此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:

    • 每组都有 X 张牌。
    • 组内所有的牌上都写着相同的整数。

    仅当你可选的 X >= 2 时返回 true。

    示例 1:

    输入:[1,2,3,4,4,3,2,1] 输出:true 解释:可行的分组是 [1,1],[2,2],[3,3],[4,4]

    示例 2:

    输入:[1,1,1,2,2,2,3,3] 输出:false 解释:没有满足要求的分组。

    示例 3:

    输入:[1] 输出:false 解释:没有满足要求的分组。

    示例 4:

    输入:[1,1] 输出:true 解释:可行的分组是 [1,1]

    示例 5:

    输入:[1,1,2,2,2,2] 输出:true 解释:可行的分组是 [1,1],[2,2],[2,2]

    提示:

    1. 1 <= deck.length <= 10000
    2. 0 <= deck[i] < 10000

    求最大公因数

     int gcd(int x, int y)
     {
         int MAX = max(x, y);
         int MIN = min(x, y);
         return MAX % MIN == 0? MIN : gcd(MIN, MAX % MIN);
     }
    
    class Solution {
    public:
        bool hasGroupsSizeX(vector<int>& deck) {
            map<int, int> save;
            int len = deck.size();
            if(len == 1)
                return false;
            for(int i = 0; i < len; i++)
            {
                save[deck[i]]++;
            }
            vector<int> v;
            for(map<int, int> :: iterator itr = save.begin(); itr != save.end(); itr++)
            {
                v.push_back(itr ->second);
            }
            int res = v[0];
            for(int i = 1; i < v.size(); i++)
            {
                res = gcd(res, v[i]);
            }
            if(res >= 2)
                return true;
            return false;
        }
    };
  • 相关阅读:
    元祖操作
    列表操作
    字符串操作
    zabbix监控脚本
    nginx 使用php-fpm的配置php环境参数
    网卡切换脚本
    mysql数据备份脚本
    docker概念
    网络链路质量监控smokeping
    搭建speedtest
  • 原文地址:https://www.cnblogs.com/lMonster81/p/10433908.html
Copyright © 2020-2023  润新知