题目

给定一副牌,每张牌上都写着一个整数。

此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:

每组都有 X 张牌。

组内所有的牌上都写着相同的整数。

仅当你可选的 X >= 2 时返回 true。

示例 1:

输入:[1,2,3,4,4,3,2,1]

输出:true

解释:可行的分组是 [1,1],[2,2],[3,3],[4,4]

示例 2:

输入:[1,1,1,2,2,2,3,3]

输出:false

解释:没有满足要求的分组。

示例 3:

输入:[1]

输出:false

解释:没有满足要求的分组。

示例 4:

输入:[1,1]

输出:true

解释:可行的分组是 [1,1]

示例 5:

输入:[1,1,2,2,2,2]

输出:true

解释:可行的分组是 [1,1],[2,2],[2,2]

提示:

1 <= deck.length <= 10000

0 <= deck[i] < 10000

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/x-of-a-kind-in-a-deck-of-cards

思路

思路很乱,本来以为很简单的,结果就绕进去了。

代码

class Solution:
def hasGroupsSizeX(self, deck: List[int]) -> bool:
a=collections.Counter(deck)
x=min(a.values())
y=max(a.values())
num=0
for i in list(a.values()):
if i%3!= 0:
num=1
if num==0:
return True
num = 0
for i in list(a.values()):
if i%5!= 0:
num=1
if num==0:
return True
if x%2==0 and y%2!=0:
return False
if x==1:
return False
if x%2!=0:
for i in list(a.keys()):
if a[i] == x or a[i]%x==0:
a[i] = x
else:
return False
x = a[deck[0]]
num=0 for i in list(a.keys()):
if a[i]==x or a[i]%2==0 :
a[i]=x
else:
return False
return True if len(deck)!=0 else False

加了最大公约数2,3,和5的特判。有点违规操作了

看看官方的代码

暴力

class Solution(object):
def hasGroupsSizeX(self, deck):
count = collections.Counter(deck)
N = len(deck)
for X in xrange(2, N+1):
if N % X == 0:
if all(v % X == 0 for v in count.values()):
return True
return False
链接:https://leetcode-cn.com/problems/x-of-a-kind-in-a-deck-of-cards/solution/qia-pai-fen-zu-by-leetcode-solution/
来源:力扣(LeetCode)

最大公约数

class Solution(object):
def hasGroupsSizeX(self, deck):
from fractions import gcd
vals = collections.Counter(deck).values()
return reduce(gcd, vals) >= 2
链接:https://leetcode-cn.com/problems/x-of-a-kind-in-a-deck-of-cards/solution/qia-pai-fen-zu-by-leetcode-solution/
来源:力扣(LeetCode)

最新文章

  1. Jprofile监控本地tomact
  2. dbm速算
  3. Node.js:util.inherits 面向对象特性【原型】
  4. artDialog.js的使用
  5. CALayer CABasicAnimation
  6. Java-反射初级知识掌握
  7. Linux - mail
  8. OpenCV尝试
  9. EasyUI datagrid formatter 属性
  10. mybatis常见错误总结
  11. QGIS中坐标偏移处理
  12. Android UI开发神兵利器之Android Action Bar Style Generator
  13. leetcode56:合并区间
  14. 20145236《网络对抗》Exp1 逆向及Bof基础
  15. 【326】PIL 截图及图片识别
  16. json字符串生成C#实体类的工具
  17. chrome浏览器 提示Adobe Flash Player未安装的解决方法
  18. python学习之路-第三天-函数
  19. Java [Leetcode 383]Ransom Note
  20. centos 查看 arp

热门文章

  1. Linux sed &amp;&amp; awk
  2. Java中间件之RMI及实例介绍 &middot; zijian's blog
  3. 测试LFI WITH PHPINO过程中的一些记录
  4. Android中Intent的各种常见作用。
  5. 在 LaTeX 中实现缩印效果
  6. PHP数组知识点整理
  7. C++扬帆远航——8(张三李四,等差数列)
  8. 一文了解各大图数据库查询语言(Gremlin vs Cypher vs nGQL)| 操作入门篇
  9. &amp;#160;前端面试题目总结1
  10. React拖拽组件Dragact V0.1.7:教你优化React组件性能与手感