题目传送门
本题思路就是将出现的数字存在unordered_set里面,因为无序集合是hash实现比较快。然后遍历集合,求公因数(在algorithm里面有函数__gcd(a,b))。如果公因数小于2即为1说明不存在解,即时返回错误,当然只有一种数字的情况要单独考虑。
class Solution
{
public:
bool hasGroupsSizeX(vector<int>& deck)
{
int index[10001]={0};
int length=deck.size();
if(length==1)
{
return false;
}
else
{
unordered_set<int> s;
for(int i=0;i<length;i++)
{
index[deck[i]]++;
s.insert(deck[i]);
}
int re;
int temp=index[*s.begin()];
s.erase(s.begin());
while(!s.empty())
{
int temp2=index[*s.begin()];
s.erase(s.begin());
re=__gcd(temp,temp2);
if(re==1)
{
return false;
}
temp=re;
}
return true;
}
}
};