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: deck = [1,2,3,4,4,3,2,1] Output: true Explanation: Possible partition [1,1],[2,2],[3,3],[4,4].
class Solution { public boolean hasGroupsSizeX(int[] deck) { Map<Integer, Integer> map = new HashMap<>(); for (int num : deck) { map.put(num, map.getOrDefault(num, 0) + 1); } int res = 0; for (Map.Entry<Integer, Integer> entry: map.entrySet()) { res = getGCD(entry.getValue(), res); } return res > 1; } private int getGCD(int a, int b) { if (a == 0) { return b; } return getGCD(b % a, a); } }