Leecode 914. 卡牌分组
作者:互联网
var hasGroupsSizeX = function(deck) {
// 对数组中的数字进行从小到大的排序
deck.sort((a,b)=>{
return a-b
})
// 设置一个数组存放1 2 3 4......的个数
let num = []
let temp = deck[0]
// 用来存相同数字的个数
let geshu = 1
for(let i =1;i<deck.length;i++){
if(deck[i]==temp){
geshu++
}else{
num.push(geshu)
geshu=1
temp=deck[i]
}
}
// 将最后一次的比较的个数也存进去
num.push(geshu)
// 开始计算num数组前两项的最大公约数,同时删除前两项并把最大公约数插入到num数组后边,
// 如此循环往复,直到num数组就剩一个数,这个数就是所有个数的最大公约数
while(num.length>1){
let k = fn(num[0],num[1]);
num.splice(0,2)
num.push(k)
}
return num[0]>1?true:false
};
// 求最大公约数
function fn(a,b){
if(b==0){
return a
}else{
return fn(b,a%b)
}
}
标签:return,deck,geshu,卡牌,Leecode,num,let,914,最大公约数 来源: https://blog.csdn.net/xinbaiyu/article/details/121139615