leecode如何实现卡牌分组功能
这篇文章给大家分享的是有关leecode如何实现卡牌分组功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
为田阳等地区用户提供了全套网页设计制作服务,及田阳网站建设行业解决方案。主营业务为成都网站制作、网站设计、外贸网站建设、田阳网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
914. 卡牌分组
https://leetcode-cn.com/problems/x-of-a-kind-in-a-deck-of-cards/
给定一副牌,每张牌上都写着一个整数。
此时,你需要选定一个数字 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 <= 100000 <= deck[i] < 10000
思路:
如果每个元素的次数相等时,满足要求
如果每个元素的次数不相等时,找元素个数的最小公倍数是否存在
class Solution: def hasGroupsSizeX(self, deck: List[int]) -> bool: if deck is None or len(deck) < 2: return False deck_dict = {} # 用来存放元素及其个数 for i in deck: deck_dict[i] = deck_dict[i]+1 if i in deck_dict else 1 count = list(deck_dict.values()) # 每个元素的次数列表 min_count = min(count) # 从中找到最小的元素个数 if len(set(count)) == 1: return True else: for X in range(2, min_count+1): # 从2开始的公约数,不能是以最小元素个数 succes = 1 # 成功的标志 for c in count: if c % X != 0: succes = 0 break if succes == 1: return True return False
感谢各位的阅读!关于“leecode如何实现卡牌分组功能”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
当前文章:leecode如何实现卡牌分组功能
网页网址:http://cdiso.cn/article/pigspj.html