#include<algorithm>
#include<map>
class Solution {
public:
bool hasGroupsSizeX(vector<int>& deck) {
int l = deck.size();
if(l<2)return false;
map<int,int> num;
for(int i=0;i<l;i++)
{
num[deck[i]]++;
}
for(int x=2;x<=l;x++)
{
if(l%x!=0)continue;
else
{ map<int,int>::iterator it;
bool all =true;
for(it=num.begin();it!=num.end();it++)
{
cout<<it->first<<" "<<it->second<<" ";
if(it->second%x!=0)
{
all = false;
break;
}
}
cout<<endl;
if(all)return true;
}
}
return false;
}
};
本文介绍了一个使用C++实现的算法,该算法通过遍历和模运算判断一副牌(整数数组)是否可以分成大小相等的组,每组包含的每个元素数量相同。算法首先统计每张牌出现的次数,然后检查这些次数是否都能被可能的组大小整除。
344

被折叠的 条评论
为什么被折叠?



