zoukankan      html  css  js  c++  java
  • 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
    12 + 02 + 02 = 1

    Approach #1: C++.

    class Solution {
    public:
        bool isHappy(int n) {
            unordered_set<int> s;
            s.insert(n);
            while (1) {
                int summ = 0;
                while (n) {
                    int t = n % 10;
                    summ += t*t;
                    n /= 10;
                }
                if (summ == 1) return true;
                if (s.count(summ)) return false;
                s.insert(summ);
                n = summ;
            }
        }
    };
    

      

    Approach #2: Java.

    class Solution {
        public boolean isHappy(int n) {
            HashSet<Integer> set = new HashSet<Integer>();
            set.add(n);
            while (n != 1) {
                int result = 0;
                while (n != 0) {
                    result += Math.pow(n % 10, 2);
                    n /= 10;
                }
                if (set.contains(result)) {
                    return false;
                }
                set.add(result);
                n = result;
            }
            return true;
        }
    }
    

      

    Approach #3: Python.

    class Solution(object):
        def isHappy(self, n):
            """
            :type n: int
            :rtype: bool
            """
            mem = set()
            while n != 1:
                n = sum([int(i)**2 for i in str(n)])
                if n in mem:
                    return False
                else:
                    mem.add(n)
            else:
                return True
    

      

    Time SubmittedStatusRuntimeLanguage
    a few seconds ago Accepted 28 ms python
    2 minutes ago Accepted 5 ms java
    8 minutes ago Accepted 0 ms cpp
    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    MySQL "show users"
    MySQL
    A MySQL 'create table' syntax example
    MySQL backup
    MySQL show status
    Tomcat, pathinfo, and servlets
    Servlet forward example
    Servlet redirect example
    Java servlet example
    How to forward from one JSP to another JSP
  • 原文地址:https://www.cnblogs.com/h-hkai/p/9959997.html
Copyright © 2011-2022 走看看