首页 > 代码库 > 202. Happy Number(LeetCode)

202. Happy Number(LeetCode)

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
     1 class Solution {
     2 public:
     3    int fang(int n)
     4     {
     5         int sum = 0;
     6         while (n != 0)
     7         {
     8             sum += (n % 10)*(n % 10);
     9             n = n / 10;
    10         }
    11         cout<<sum<<endl;
    12         return sum;
    13     }
    14     
    15     bool isHappy(int n) {
    16         int i=0;
    17             while (n!=1&&i<100)
    18             {
    19                 n = fang(n);
    20                 cout<<n<<endl;
    21                 i++;
    22             }
    23             if (n == 1&&i<100)
    24             {
    25                 return true;
    26             }
    27             if (i >= 100)
    28             return false;
    29     }
    30 };
     1 class Solution {
     2 public:
     3     bool isHappy(int n) {
     4         unordered_map<int, bool> m;
     5         while (n != 1 && !m.count(n)){
     6             m[n] = true;
     7             int new_n = 0;
     8             while (n){
     9                 new_n += (n % 10)*(n % 10);
    10                 n /= 10;
    11             }
    12             n = new_n;
    13         }
    14         return n == 1;
    15     }
    16 };

     

202. Happy Number(LeetCode)