LeetCode914. 卡牌分組

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);
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章