题意
原题链接
思路
那个数组存一下。出现循环数肯定就不 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;
};
复制代码