202. 快乐数(JavaScript)

编写一个算法来判断一个数是不是“快乐数”。

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

示例: 

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

思路:

这道题思路较清晰,计算正整数 n 的各位的平方和 sum,若 sum等于1,则返回true,若不等,则将sum赋值给n,重复上述步骤。

不过有可能sum始终不为1,我们设置一个最大循环次数,次数使用完时,sum还是不为1,就说明这个正整数不是快乐数。

/**
 * @param {number} n
 * @return {boolean}
 */
var isHappy = function(n) {
  var sum,
      count = 50; // 最多循环50次
  while (count >= 0) {
    var remainder;  // 余数
    sum = 0;
    while (n !== 0) {
      remainder = n % 10;
      sum += remainder * remainder;
      n = parseInt(n / 10);
    }
    if (sum === 1) return true;
    n = sum;
    count--;
  }
  return false;
};

 

全部评论

相关推荐

09-29 11:19
门头沟学院 Java
点赞 评论 收藏
分享
10-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务