zoukankan      html  css  js  c++  java
  • 【Leetcode】卡牌分组(每日一题)

    题目链接:卡牌分组


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

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

    每组都有 X 张牌。
    组内所有的牌上都写着相同的整数。
    仅当你可选的 X >= 2 时返回 true。

    题解:用map统计一下每个数字出现的次数,然后求这些次数的最大公约数,如果>1就可以组成卡牌。

    但是我这个题优化了很久还是56ms//效率很低。。


    代码:

     1 class Solution {
     2 public:
     3     int gcd(int a,int b){
     4         if(b == 0)  return a;
     5         return gcd(b,a%b);
     6     }
     7     bool hasGroupsSizeX(vector<int>& deck) {
     8         int len  = deck.size();
     9         map<int,int>mp;
    10 
    11         for(int i = 0; i < len;i++){
    12             mp[deck[i]]++;
    13         }
    14 
    15         int g = mp[deck[0]];
    16         int len1 = mp.size();
    17         for(int i = 0; i <= len1; i++){
    18             if(mp[i] == 0)  continue;
    19             else{
    20                 g = gcd(g,mp[i]);
    21                 if(g == 1)  return false;
    22             }           
    23         }
    24         return true;
    25     }
    26 };
  • 相关阅读:
    Linux 7 web服务基础知识
    Linux 6 Nginx
    Linux 5 MySQL、redis相关
    Linux 4 安装相关程序
    phpcms 路由配置
    ecmall 入口文件解析 引入了什么
    php 调用天气接口
    phpcms 加载微信类库,生成签名
    ecmall 学习记录2
    Jquery 遍历
  • 原文地址:https://www.cnblogs.com/Asumi/p/12583218.html
Copyright © 2011-2022 走看看