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

    1. 问题描述

    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

    Tags: Hash Table Math
    Similar Problems: (E) Add Digits (E) Ugly Number

    2. 解题思路

    • 利用集合,判断是否陷入循环!!!

    3. 代码

    class Solution {
    public:
        bool isHappy(int n) 
        {
            std::set<int> tSet;
            tSet.insert(n);
            while (true)
            {
                int t = Sum(n);
                if (t == 1)
                {
                    return true;
                }
                if (0 != tSet.count(t))
                {
                    return false;
                }
                tSet.insert(t);
                n = t;
            }
        }
        int Sum(int n)
        {
            int sum = 0;
            while (0 != n)
            {
                int t = n%10;
                n = n/10;
                sum += t*t;
            }
            return sum;
        }
    };

    4. 反思

  • 相关阅读:
    【CQOI2015】网络吞吐量
    【SDOI2010】所驼门王的宝藏
    【NOIP2013】华容道
    【SNOI2019】通信
    【IOI2016】railroad
    【AtCoder3611】Tree MST
    【AtCoder2134】ZigZag MST
    【CF891C】Envy
    【BZOJ4883】棋盘上的守卫
    【CF888G】Xor-MST
  • 原文地址:https://www.cnblogs.com/whl2012/p/5754796.html
Copyright © 2011-2022 走看看