方法一 个人解法:
var hasGroupsSizeX = function(deck) {
deck.sort((a,b)=>a-b)
var count=1,group=[],min=999
for(var i=0;i
消耗时间和内存情况:
思路是没问题的,但是代码写的有点臃肿复杂,需要优化一下:
var hasGroupsSizeX = function(deck) {
let map = new Map()
for(let n of deck){
if(map.has(n)){
map.set(n,map.get(n)+1)
}else{
map.set(n,1)
}
}
let group = [...map.values()]
let res = group[0]
return group.every(i => (res = gcd(res, i)) > 1)
};
let gcd = (a, b) => (b === 0 ? a : gcd(b, a % b))
其实只需要统计各个数字的频次,求最大公约数是否大于1。
消耗时间和内存情况: