【leetCode】
34.6% | Easy |
In a deck of cards, each card has an integer written on it.
Return true
if and only if you can choose X >= 2
such that it is possible to split the entire deck into 1 or more groups of cards, where:
- Each group has exactly
X
cards. - All the cards in each group have the same integer.
公共因子就是取gcd,,不废话了。
class Solution {
public:
bool hasGroupsSizeX(vector<int>& deck) {
map<int,int>mp;
mp.clear();
int size=deck.size();
for(int i=0;i<size;i++)
{
if(mp.count(deck[i])==0)
{
mp[deck[i]]=1; // 1 instead of 0 !!! wrong answer *1;
}
else
{
mp[deck[i]]++;
}
}
map<int,int>::iterator it=mp.begin();
int g=it->second;
++it;
for(;it!=mp.end() ;++it)
{
g=__gcd(g,it->second);
}
if(g>1)
{
return 1;
}
return 0;
}
};