领扣LintCode算法问题答案-1728. 卡牌分组

    科技2022-08-06  104

    领扣LintCode算法问题答案-1728. 卡牌分组

    目录

    1728. 卡牌分组描述样例 1:样例 2:样例 3: 题解鸣谢

    1728. 卡牌分组

    描述

    给定一副牌,每张牌上都写着一个整数。

    此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:

    每组都有 X 张牌。 组内所有的牌上都写着相同的整数。 仅当你可选的 X >= 2 时返回 true。

    1 <= deck.length <= 100000 <= deck[i] < 10000

    样例 1:

    输入: [1,2,3,4,4,3,2,1] 输出: true 解释: 可行的分组 [1,1],[2,2],[3,3],[4,4]

    样例 2:

    输入: [1,1,1,2,2,2,3,3] 输出: false 解释: 没有可行的分组

    样例 3:

    输入: [1] 输出: false 解释: 没有可行的分组

    题解

    public class Solution { /** * @param deck: a integer array * @return: return a value of bool */ public boolean hasGroupsSizeX(List<Integer> deck) { // write your code here Map<Integer, Integer> counter = new HashMap<>(); for (Integer n : deck) { Integer count = counter.get(n); if (count == null) { count = 0; } counter.put(n, count + 1); } int x = 2; for (;x <= deck.size(); x++) { boolean ok = true; for (int c : counter.values()) { if (c != x && c % x != 0) { ok = false; break; } } if (ok) { return true; } } return false; } }

    原题链接点这里

    鸣谢

    非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。 欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。

    Processed: 0.012, SQL: 8