914. X of a Kind in a Deck of Cards
Easy
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].
Example 2:
Input: deck = [1,1,1,2,2,2,3,3] Output: false´ Explanation: No possible partition.
Example 3:
Input: deck = [1] Output: false Explanation: No possible partition.
Example 4:
Input: deck = [1,1] Output: true Explanation: Possible partition [1,1].
Example 5:
Input: deck = [1,1,2,2,2,2] Output: true Explanation: Possible partition [1,1],[2,2],[2,2].
Constraints:
1 <= deck.length <= 10^4
0 <= deck[i] < 10^4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | class Solution { public boolean hasGroupsSizeX(int[] deck) { Map<Integer, Integer> count = new HashMap<>(); for(int i : deck){ count.put(i, count.getOrDefault(i, 0) + 1); } int ret = 0; for(int i : count.values()){ ret = gcd(i, ret); } return ret>1; } int gcd(int a, int b){ if(b==0) return a; else return gcd(b, a%b); } } |
No comments:
Post a Comment