189 8069 5689

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://cdxtjz.cn/article/pigspj.html

其他资讯