今日打卡,仍然是暴力解,效率很低。思路就是先把每个数存进map里,key是deck的数,value是这个数的个数,然后从遍历2到10000(题目限制了10000),看是否所有次数都能除尽,若所有值的个数都能除尽,说明这个数是他们的最大公约数,即返回正确,如果找不到这个数,那么当然就返回false啦。
另一种思路:其实就是计算所有数个数的最大公约数,也可以这么做。
源码:
bool hasGroupsSizeX(vector<int>& deck) {
map<int ,int > mymap ;
for(int i = 0 ; i < deck.size(); i ++)
{
mymap[deck[i]]++;
}
int jilu =0 ;
for( int i = 2; i < 10000; i++) {
for (auto k = mymap.begin(); k != mymap.end(); k++) {
if(k->second % i == 0)
jilu++;
else {jilu =0; break;}
}
if(jilu == mymap.size())
return true;
else {jilu==0;}
}
return false;
}