題意
思路
那個陣列存一下。出現迴圈數肯定就不 OK 了。
用 普通陣列,比用 Set
快。
用 普通 for
迴圈 應該會比 用 reduce
快
程式碼
/**
* @param {number} n
* @return {boolean}
*/
var isHappy = function(n) {
function cal(val = n){
if(!val){
return -1;
}
val = (val + '').split('');
let sum = 0;
for(let i = 0; i < val.length; ++i){
sum += Math.pow(val[i], 2);
}
return sum;
}
let q = []; // 擯棄 Set 會快一點
let res = cal();
while(res !== 1){
if(res <= 0){
return false;
}
if(q.indexOf(res) > -1){
return false;
}
q.push(res);
res = cal(res);
}
return true;
};
複製程式碼