Problem Description
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
Answers
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; } };
The answer analysis
The answer is divided into two parts: thrown into hashset, the calculation results.
first part. It is added to each of the n hashset in, whether hashset.end () is empty is determined. If repeated, then that forget lap count back, not a happy number.
the second part. And examples of the same, each sum = 0, and then update the value of n.
It became the last n 1, indicating a happy number.