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。

  • 相关阅读:
    Less资源汇总
    Less函数说明
    Less使用说明
    Less 简介
    tomcat-users.xml 配置
    java project打包生成jar包(通用)
    5分钟理解String的'+'的性能及原理
    字符串"+"操作的原理
    Shell脚本实现对文件编辑
    mysql关于聚集索引、非聚集索引的总结
  • 原文地址:https://www.cnblogs.com/kykai/p/11610618.html
Copyright © 2011-2022 走看看