欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

leetcode:914. 卡牌分组(数学)

程序员文章站 2022-06-07 11:43:10
...

题目:

leetcode:914. 卡牌分组(数学)

分析:

代码标记的很清楚了

代码:

sort(v.begin(),v.end());
 //查找有没有单个出现的数
 if(v[0]!=v[1]) return 0;
 if(v[v.size()-1]!=v[v.size()-2]) return 0;
 for(int i=1;i<v.size()-1;i++)
 {
  if(v[i]!=v[i-1]&&v[i]!=v[i+1]) return 0;
 }
 int all=1;
 vector<int> v2; 
 //统计每个数出现的个数:   每个数都至少出现了两次了 
 for(int i=1;i<v.size();i++)
 {
  if(v[i]==v[i-1]) all++;
  else{
   v2.push_back(all);
   all=1;
  } 
 }
 v2.push_back(all);
 sort(v2.begin(),v2.end());
 if(v2.size()==1) return 1;
 //寻找任意两个数的最大公因数。
 for(int i=0;i<v2.size()-1;i++)
 {
  for(int j=i+1;j<v2.size();j++)
  {
   if(gcd(v2[i],v2[j])==1) return 0;
  }
 }
 cout<<1;
相关标签: 数学