首页 > 其他 > 详细

LeetCode 914卡盘分组

时间:2020-03-28 00:02:44      阅读:59      评论:0      收藏:0      [点我收藏+]

看了官方题解如下:

class Solution {
    public boolean hasGroupsSizeX(int[] deck) {
        int N = deck.length;
        int[] count = new int[10000];
        for (int c: deck)
            count[c]++;

        List<Integer> values = new ArrayList();
        for (int i = 0; i < 10000; ++i)
            if (count[i] > 0)
                values.add(count[i]);

        search: for (int X = 2; X <= N; ++X)
            if (N % X == 0) {
                for (int v: values)
                    if (v % X != 0)
                        continue search;
                return true;
            }

        return false;
    }
}

我一直在想,如果使用C语言怎么实现 vues.add(count[i]) 这一步,也就是将count[i] > 0 的这一部分存下来,后来参考了其他人的题解写出的C语言的代码,发现真的需要将这些过滤出来么,我不过滤直接进行遍历不是也是可以的么?

bool hasGroupsSizeX(int* deck, int deckSize){
    if (deckSize <= 1) {
         return false;
     }
     
     int i,X;
     int N = deckSize;
     
     int count[10000] = {0};

     for (i = 0;i < deckSize;i++) {
         count[deck[i]]++;
     }

     for (X = 2;X <= deckSize;X++) {
         if (N % X == 0) {
             bool flag = 1;

             for (i = 0;i < deckSize;i++) {
                 if (count[i] > 0 && count[i] % X != 0) {
                     flag = 0;
                     break;
                 }
             }

             if (flag) {
                 return true;
             }
         }
     }
     return false;
}

通过这个实现,我发现我们有时候一直在思考怎么实现A,难道我们真的需要A么,没有A就不可以么,我们直接使用B可以么?好像这个就是我们经常会遇见的X,Y问题,真正要解决的问题是X,问了很多关于Y的问题,思维陷阱,所以我们思考问题的时候一定要跳出来。

LeetCode 914卡盘分组

原文:https://www.cnblogs.com/zhangpengfei5945/p/12584744.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!