914. 卡牌分組
解題思路:遍歷 deck 以每個非重複數字爲 key,出現次數爲 value
若所有的 value 存在最大公約數(大於 1),則返回 true,否則返回 false。
public boolean hasGroupsSizeX(int[] deck) {
Map<Integer, Integer> map = new HashMap<>();
for (int card : deck) {
map.put(card, map.getOrDefault(card, 0) + 1);
}
int count = 1;
boolean flag = false;
for (Integer key : map.keySet()) {
if (!flag) {
count = map.get(key);
flag = true;
} else {
count = gcd(count, map.get(key));
}
if (count < 2) {
return false;
}
}
return count != 1;
}
/**
* 求最大公約數
*/
private int gcd(int a, int b) {
return a == 0 ? b : gcd(a % b, b);
}