[914] X of a Kind in a Deck of Cards
https://leetcode.com/problems/x-of-a-kind-in-a-deck-of-cards/description/
- algorithms
- Easy (33.64%)
- Source Code: 914.x-of-a-kind-in-a-deck-of-cards.py
- Total Accepted: 16.5K
- Total Submissions: 48.2K
- Testcase Example: '[1,2,3,4,4,3,2,1]'
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.
Example 1:
Input: [1,2,3,4,4,3,2,1] Output: true Explanation: Possible partition [1,1],[2,2],[3,3],[4,4]
Example 2:
Input: [1,1,1,2,2,2,3,3] Output: false Explanation: No possible partition.
Example 3:
Input: [1] Output: false Explanation: No possible partition.
Example 4:
Input: [1,1] Output: true Explanation: Possible partition [1,1]
Example 5:
Input: [1,1,2,2,2,2] Output: true Explanation: Possible partition [1,1],[2,2],[2,2]
Note:
1 <= deck.length <= 10000
0 <= deck[i] < 10000
python
class Solution(object):
def hasGroupsSizeX(self, deck):
"""
:type deck: List[int]
:rtype: bool
"""
table = {}
for d in deck:
if d not in table:
table[d] = 0
table[d] += 1
g = reduce(self.gcd, table.values())
if g < 2: return False
return True
def gcd(self, a, b):
if b != 0:
return self.gcd(b, a % b)
return a