zoukankan      html  css  js  c++  java
  • LeetCode 914. 卡牌分组

    914. 卡牌分组

    难度简单

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

    此时,你需要选定一个数字 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

     思路:这道题可以先将提供的所有相同数据用数组存储起来,然后找出这些数据个数的最大公约数用另一个数组储存起来,在这个数组中,找出最小的数字,用所有数据个数依次除以这个最小的最大公约数,如果余数不为0,证明不成立,返回false,否则,返回true,然后重点来了,一定要记得考虑好边界值,鄙人因为这个问题找了一个小时还有多的bug,费话不多说,咱来看看代码。

    bool hasGroupsSizeX(int* deck, int deckSize){
        if(deckSize<2){
            return false;
        }
        int a[10000],b[deckSize-1];
        int i,m,n,c,min,flag=1;
        for(i=0;i<10000;i++){
            a[i]=0;
        }
        for(i=0;i<deckSize;i++){
            a[deck[i]]++;
        }
        for(i=0;i<deckSize-1;i++){
            n=1;
            m=a[deck[i]];
            c=a[deck[i+1]];
            while(n!=0){
                n=m%c;
                m=c;
                c=n;
            }
            b[i]=m;
        }
        min=b[0];
        for(i=0;i<deckSize-1;i++){
            min=min>b[i]?b[i]:min;
        }
        for(i=0;i<deckSize;i++){
            if(a[deck[i]] % min != 0){
                flag=0;
            }
        }
        for(i=0;i<deckSize-1;i++){
            if(b[i]==1){
                return false;
            }
        }
        if(flag==0){
            return false;
        }
        return true;
    
    }
  • 相关阅读:
    HTML5标签变化
    接口测试基础入门学习
    1.1Axure简介
    win 7命令行大全
    程序集强签名
    源代码的文件头格式化
    redmine2.3环境搭建
    静态成员和方法的使用场合及利弊分析
    .Net Memory Profiler入门
    TransactionScope类
  • 原文地址:https://www.cnblogs.com/woju/p/12584697.html
Copyright © 2011-2022 走看看