当前位置: 首页 > 后端技术 > Python

力扣-0914.XofaKindinaDeckofCards卡牌分组【Python】

时间:2023-03-26 00:19:32 Python

LeetCode0914.XofaKindinaDeckofCards卡牌分组【Easy】【Python】【数学】问题LeetCode在一副牌中,每张卡片上都写有一个整数。当且仅当您可以选择X>=2时才返回真,这样可以将整个牌组分成1组或多组卡片,其中:每组恰好有X张卡片。所有每组中的卡片具有相同的整数。示例1:输入:deck=[1,2,3,4,4,3,2,1]输出:trueExplanation:可能的分区[1,1],[2,2],[3,3],[4,4]。示例2:输入:deck=[1,1,1,2,2,2,3,3]输出:false′解释:没有可能的分区。示例3:输入:deck=[1]输出:false解释:没有可能的分区。示例4:输入:deck=[1,1]输出:true解释:可能的分区[1,1]。示例5:输入:deck=[1,1,2,2,2,2]输出:true解释:可能的分区[1,1],[2,2],[2,2].Constraints:1<=deck.length<=10^40<=deck[i]<10^4问题力扣给定一个副牌,每个张牌都写着一个整数此时,你需要选择一个数字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]Tips:1<=deck.length<=10^40<=deck[i]<10^4Ideamath直接调用Python的collections库,计数器统计。然后计算所有整数出现的最大公约数。Python3代码来自输入importListimportcollectionsimportmathclass解决方案:defhasGroupsSizeX(self,deck:List[int])->bool:#Counterstatisticsareadictionaryc=list(collections.Counter(deck).values())res=c[0]#找出c中x的所有数的最大公约数:res=math.gcd(res,x)returnres>1GitHublinkPython