LeetCode 914. X of a Kind in a Deck of Cards

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
static auto x = []()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    return 0;
}();
class Solution {
private:
    int getGreatestDivisor(int a,int b){
        if(a==1||b==1)return 1;
       
        if(a<b){
            if(b%a==0)return a;
        }
        if(b<a){
            if(a%b==0)return a;
        }
       
        if(a==b)return a;
        else{
            if((a&1)==0&&(b&1)==0){
                return getGreatestDivisor(a>>1,b>>1)<<1;
            }
            else if((a&1)==0){
                return getGreatestDivisor(a>>1,b);
            }
            else if((b&1)==0){
                return getGreatestDivisor(a,b>>1);
            }
            else{
                if(a<b){
                    return getGreatestDivisor(b%a,b);
                }
                else{
                     return getGreatestDivisor(a,a%b);
                }
            }
        }
    }
public:
    bool hasGroupsSizeX(vector<int>& deck) {
        unordered_map<int,int> m;
        for(int d:deck){
            if(m.find(d)==m.end()){
                m[d]=1;
            }
            else{
                m[d]++;
            }
        }
       
        int max=0;
        for(unordered_map<int,int>::iterator it=m.begin();
           it!=m.end();++it){
            if(max==0){
                max=it->second;
            }
            else{
                max=getGreatestDivisor(it->second,max);
            }
            if(max==1){
                return false;
            }
        }
        if(max<=1){
            return false;
        }
        else{
            return true;
        }
    }
};



One Reply to “LeetCode 914. X of a Kind in a Deck of Cards”

  1. After looking over a number of the blog articles on your web
    page, I seriously appreciate your technique of writing a blog.
    I added it to my bookmark site list and will be checking back in the near future.
    Please visit my web site too and tell me your opinion.

Leave a Reply

Your email address will not be published. Required fields are marked *