# leetcode-914

2020年3月29日

### 914. 卡牌分组

题目

将大牌堆分成多个牌数量相等的小牌堆，就是求每张牌数量的公约数。先遍历一遍得到每张牌的数量，然后找出比2大的公约数即可。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27

    class Solution:
      def hasGroupsSizeX(self, deck) -> bool:
        dc = {}
        max_d = 0
        for d in deck:
          if d not in dc:
            dc[d] = 0
          dc[d] += 1
          if max_d < d:
            max_d = d
          if max_d < dc[d]:
            max_d = dc[d]
        has_x = True
        if max_d == 1:
          max_d = 2

        for i in range(2, max_d + 1):
          has_x = True
          for k,v in dc.items():
            if v % i:
              has_x = False
              break
          if has_x and i >= 2:
            return True
        return False

    #56 ms	13.8 MB