給定一副牌,每張牌上都寫著一個(gè)整數(shù)渠羞。
此時(shí),你需要選定一個(gè)數(shù)字 X荧恍,使我們可以將整副牌按下述規(guī)則分成 1 組或更多組:
每組都有 X 張牌屯吊。
組內(nèi)所有的牌上都寫著相同的整數(shù)。
僅當(dāng)你可選的 X >= 2 時(shí)返回 true盒卸。
示例 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
解釋:沒有滿足要求的分組外臂。
示例 4:
輸入:[1,1]
輸出:true
解釋:可行的分組是 [1,1]
示例 5:
輸入:[1,1,2,2,2,2]
輸出:true
解釋:可行的分組是 [1,1]体箕,[2,2],[2,2]
提示:
1 <= deck.length <= 10000
0 <= deck[i] < 10000
var hasGroupsSizeX = function (deck) {
/*
思路:遍歷2到數(shù)組的長(zhǎng)度跃须,兩兩一組娃兽,三三一組,乃至只分一組,只要找到每組都一樣阔馋,就返回true娇掏,否則返回false
*/
//先排序,方便處理
let arr = deck.sort();
let res = false;
for (let i = 2; i <= deck.length; i++) {
console.log(i)
//如果不能被i整除下梢,直接跳過(guò)
if (deck.length % i != 0)
continue;
//遍歷分組的次數(shù)塞蹭,比如6個(gè)分成三組,就遍歷三次番电,6個(gè)分成兩組,就遍歷兩次这刷,看看每一組里面的數(shù)字是否都相同
let identical = true;//先標(biāo)記為true崭歧,只要有一組不同就改為false,最后看看true還是false
for (let j = 0; j < deck.length / i; j++) {
console.log(deck[j * i], deck[i * (j + 1) - 1])
if (deck[j * i] != deck[i * (j + 1) - 1])
identical = false;
}
res = identical;
//如果一旦找到,就退出
if (res)
break
}
return res;
};
有問題請(qǐng)?jiān)u論叔营,我會(huì)一一回復(fù)