leetcode-快乐数

97 阅读1分钟

对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果 可以变为  1,那么这个数就是快乐数。 如果 n 是快乐数就返回 true ;不是,则返回 false 。

示例 1:

输入: n = 19
输出: true
解释: 12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1

提示:

  • 1 <= n <= 2的31次方 - 1

代码思路

哈希集合,把所有的和存储起来, 如果出现了重复就证明不是快乐数,就会无限循环

代码展示

const isHappy = n=>{
  let set = new Set()
  //n是一个数字类型的,数字类型不能进行转换
  //转化成字符串
  n+='';
  let sum = 0;
  while(sum!=1){
      sum = 0;
    for(let i = 0;i < n.length; i++){
      sum += n[i] * n[i]
    }
    if(set.has(sum)) return false;
    n = sum + '';
    set.add(sum)
  }
  return true
}