领扣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 {
public boolean hasGroupsSizeX(List
<Integer> deck
) {
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;
}
}
原题链接点这里
鸣谢
非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。 欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。