zoukankan      html  css  js  c++  java
  • LC 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: 
    1^2 + 9^2 = 82
    8^2 + 2^2 = 68
    6^2 + 8^2 = 100
    1^2 + 0^2 + 0^2 = 1

    参考答案

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

    答案分析

    答案分成两部分:扔进hashset里,计算结果。

    第一部分。把每次的n都加入hashset中,使用 hashset.end() 判断是否为空。如果重复了,那么说明算了一圈算回来了,不是 happy number。

    第二部分。和例子一样,每次sum=0,然后 update the value of n. 

    最后 n 成为了 1, 说明是 happy number。

  • 相关阅读:
    powerful number 小记
    CF573E Bear and Bowling
    Diary 2.0
    【LOJ2540】「PKUWC2018」随机算法
    【Luogu2496】【BZOJ3005】[SDOI2012]体育课
    CF-diary
    【CF1217F】Forced Online Queries Problem
    NOI2019 选做
    Codeforces Round #568 (Div. 2) 选做
    【LOJ2513】「BJOI2018」治疗之雨
  • 原文地址:https://www.cnblogs.com/kykai/p/11610618.html
Copyright © 2011-2022 走看看