LeetCode 202. Happy Number
Write an algorithm to determine if a number n 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.
- Repeat the process until the number equals 1, or
it loops endlessly in a cycle
which does not include 1. - Those numbers for which this process
ends in 1
are happy.
Return true if n is a happy number, and false if not.
Example 1:
Input: n = 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$
Example 2:
Input: n = 2
Output: false
method: 哈希表
记录每次平方和结果,如果出现循环返回false
int squareSum(int x) {
int sum = 0;
while (x) {
sum += (x % 10) * (x % 10);
x /= 10;
}
return sum;
}
bool isHappy(int n) {
unordered_set<int> hash;
while (1) {
n = squareSum(n);
if (n == 1) return true;
if (hash.find(n) != hash.end()) return false;
else hash.insert(n);
}
return false;
}