LoginSignup
1
0

More than 3 years have passed since last update.

Happy Number

Last updated at Posted at 2020-04-03

20200403
Write an algorithm to determine if a number is "happy".

A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.

Example:

Input: 19
Output: true
Explanation: 
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1

Javascript:

/**
 * @param {number} n
 * @return {boolean}
 */
var isHappy = function(n, counter=0) {
    result = false;
    if(counter < 20){
        //切割n并算出各个位置上数字平方后存入array数组
        const array = n.toString().split("").map(n => n*n);
        //数组单位加和,参数:初始值,最终值,初始Index:0
        const sum = array.reduce((a, b)=> a + b, 0);

        if (sum ===1 ){
            result = true;
        } else {
            counter++;
            isHappy(sum, counter);
        }

        return result;

    }
};

sample 44 ms submission
Setを活用したバージョン

/**
 * @param {number} n
 * @return {boolean}
 */
var isHappy = function(n) {
  let seen = new Set();
  let current = n;

  while(true) {
    current = String(current).split('').reduce((acc, number) => (acc + Number(number)**2), 0)
    if(current === 1) {
      return true;
    } else if(seen.has(current)) {
      return false;
    } else {
      seen.add(current)
    }
  }
};
1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0