LeetCode #914. X of a Kind in a Deck of Cards
题目
914. X of a Kind in a Deck of Cards
解题方法
根据题意可以转化问题为:分别统计所有数出现的频数,再求这些频数的最大公约数,如果不是1就返回True,否则False。所以先用字典统计次数,再用欧几里得算法计算最大公约数,用Python的reduce()函数对所有频数进行依次计算。
时间复杂度:O(N·logN·logN)
空间复杂度:O(N)
这里的N为卡片的种数。
代码
class Solution:
def gcd(self, x, y):
while y:
x, y = y, x % y
return x
def hasGroupsSizeX(self, deck: List[int]) -> bool:
dic = {}
for x in deck:
if x in dic:
dic[x] += 1
else:
dic[x] = 1
return reduce(gcd, dic.values()) >= 2

浙公网安备 33010602011771号