zoukankan      html  css  js  c++  java
  • 914. X of a Kind in a Deck of Cards

    In a deck of cards, each card has an integer written on it.

    Return true if and only if you can choose X >= 2 such that it is possible to split the entire deck into 1 or more groups of cards, where:

    • Each group has exactly X cards.
    • All the cards in each group have the same integer.

    问能不能把排分成n组,每组的牌卡片数量X大于等于2,每组的牌必须是相同值。

    统计每个值出现的次数,能不能分成n组使得每组卡牌数量大于2,这个就是想求一下每个值出现次数的最大公约数是否大于等于2

    比如[1,1,1,1,2,2]1出现4次2出现2次,最大公约数是2,因此可以分成2张一组的,[1,1,1,2,2]1出现次数是3,2出现次数是2,最大公约数是1,因此只能分成1张一组的。

    class Solution(object):
        def hasGroupsSizeX(self, deck):
            """
            :type deck: List[int]
            :rtype: bool
            """
            def gcd(a, b):
                return b if a == 0 else gcd(b % a, a) 
            d = {}
            for value in deck:
                if value in d:
                    d[value] += 1
                else:
                    d[value] = 1
            g = None
            for key, value in d.items():
                if g is None:
                    g = value
                else:
                    g = gcd(g, value)
            return g >= 2
  • 相关阅读:
    qt中使用C++thread
    qt--mask蒙版
    qt--调色板QPalette
    qt--Q_PROPERTY自定义属性
    路由扩张器
    qt-QBitmap单色图
    qt-QPixmap
    nodejs中的文件系统
    深入理解nodejs中的异步编程
    Vue 事件监听
  • 原文地址:https://www.cnblogs.com/whatyouthink/p/13308323.html
Copyright © 2011-2022 走看看