zoukankan      html  css  js  c++  java
  • [Algorithm] 202. Happy Number

    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

    Handle the number directly, common way is thougth % or / operator

    /**
     * @param {number} n
     * @return {boolean}
     */
    var isHappy = function(n) {
        let memo = {};
        
        while(n !== 1 && !memo[n]) {
            memo[n] = true;
            let sum = 0;
            while(n > 0) {
                sum += (n % 10) *(n % 10);
                n = Math.floor(n / 10);
            }
            n = sum;
        }
        
        return n == 1;
    };

    Second way:

    /**
     * @param {number} n
     * @return {boolean}
     */
    var isHappy = function(n) {
        return helper(n, {});
    };
    
    function helper(n, memo) {
        const ary = `${n}`.split('');
        let sum = 0;
        for (let n of ary) {
            sum += Math.pow(parseInt(n, 10), 2);
        }
        
        if (sum === 1) {
            return true;
        }
        
        if (sum in memo) {
            return false;
        }
        memo[sum] = true;
        return helper(sum, memo);
    }
  • 相关阅读:
    HDU 5818 Joint Stacks
    HDU 5816 Hearthstone
    HDU 5812 Distance
    HDU 5807 Keep In Touch
    HDU 5798 Stabilization
    HDU 5543 Pick The Sticks
    Light OJ 1393 Crazy Calendar (尼姆博弈)
    NEFU 2016省赛演练一 I题 (模拟题)
    NEFU 2016省赛演练一 F题 (高精度加法)
    NEFU 2016省赛演练一 B题(递推)
  • 原文地址:https://www.cnblogs.com/Answer1215/p/12057168.html
Copyright © 2011-2022 走看看