zoukankan      html  css  js  c++  java
  • Leetcode题目: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: 19 is a happy number

    • 12 + 92 = 82
    • 82 + 22 = 68
    • 62 + 82 = 100
    • 12 + 02 + 02 = 1

    题目解答:不断计算num各位数字的平方和,直到进入循环或最终结果为1,并返回对应的结果。

    代码如下:

    class Solution {
    public:
        bool isHappy(int n) {
            if(n <= 0)
                return false;
            unordered_set<int> num_set;
            while((n != 1) && (num_set.find(n) == num_set.end() ) )
            {
                num_set.insert(n);
                n = getSum(n);
            }
            if(n == 1)
            {
                return true;
            }
            else
                return false;
           
        }
       
        int getSum(int n)
        {
            int sum = pow((n % 10),2) ;
            while(n / 10 != 0)
            {
                n = n / 10;
                int tmp = pow((n % 10),2);
                sum += tmp;
               
            }
            return sum;
        }
    };

  • 相关阅读:
    Codeforces Round #229
    A Funny Game(博弈论)
    01背包模板
    一月24日新生冬季练习赛解题报告H.排列问题
    一月24日新生冬季练习赛解题报告F.棋盘
    POJ 2240Arbitrage
    POJ 3660Cow Contest
    POJ 3259Wormholes
    POJ 1860Currency Exchange
    HDU 4027Can you answer these queries?
  • 原文地址:https://www.cnblogs.com/CodingGirl121/p/5425031.html
Copyright © 2011-2022 走看看