原题:快乐数
我的理解:
题目中说会出现无限循环,出现无线循环就是不是快乐数了,这时可以使用哈希表来记录是否出现过。
难点可能在于对每个各位数的计算sum值。
* @lc app=leetcode.cn id=202 lang=javascript
*
* [202] 快乐数
*/
// @lc code=start
/**
* @param {number} n
* @return {boolean}
*/
var isHappy = function(n) {
//定义一个set,用于保存sum
let s = new Set();
//定义一个函数,用来计算每个数的判断结果
var getSum = function(n) {
let sum = 0;
while(n){
sum += (n % 10) ** 2;
n = Math.floor(n/10);
}
return sum;
}
//循环,一直判断
while(1) {
//判断n的sum值是否为1,如果为1则说明是快乐数,否则继续,一直找到重复的sum值才能说明不是快乐数
if(getSum(n)===1) return true;
n = getSum(n);
if(s.has(n)) return false;
s.add(n)
}
`};`