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;
发布了196 篇原创文章 · 获赞 126 · 访问量 4653

猜你喜欢

转载自blog.csdn.net/weixin_42721412/article/details/104560596