Problem Link

Description


You are given an integer array deck where deck[i] represents the number written on the ith card.

Partition the cards into one or more groups such that:

  • Each group has exactly x cards where x > 1, and
  • All the cards in one group have the same integer written on them.

Return true if such partition is possible, or false otherwise.

 

Example 1:

Input: deck = [1,2,3,4,4,3,2,1]
Output: true
Explanation: Possible partition [1,1],[2,2],[3,3],[4,4].

Example 2:

Input: deck = [1,1,1,2,2,2,3,3]
Output: false
Explanation: No possible partition.

 

Constraints:

  • 1 <= deck.length <= 104
  • 0 <= deck[i] < 104

Solution


Python3

class Solution:
    def hasGroupsSizeX(self, deck: List[int]) -> bool:
        
        count = collections.Counter(deck)
        
        mini = min(count.values())
        
        if mini < 2: return False
        
        for i in range(mini,1,-1):
            check = all(value % i == 0 for value in count.values())
 
            if check: return True
            
        return False