作者:ecrbw_9870105634 | 来源:互联网 | 2023-08-07 11:36
HappyNumberWriteanalgorithmtodetermineifanumberishappy.Ahappynumberisanumberdefinedbythe
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: 19 is a happy number
- 12 + 92 = 82
- 82 + 22 = 68
- 62 + 82 = 100
- 12 + 02 + 02 = 1
Credits:
Special thanks to @mithmatt and @ts for adding this problem and creating all test cases.
循环计算每位数字的平方和,直到出现结果为1(返回true)或者重复(返回false)
class Solution {
public:
bool isHappy(int n) {
unordered_map<int, bool> m;
int sum = Helper(n);
while(sum != 1)
{
if(m[sum] == true)
return false;
m[sum] = true;
sum = Helper(sum);
}
return true;
}
int Helper(int n)
{// sum of the squares of its digits
int ret = 0;
while(n)
{
int digit = n%10;
n /= 10;
ret += (digit*digit);
}
return ret;
}
};
![技术分享](https://img1.php1.cn/3cd4a/24cea/696/fe7a0b86e5a5e7d5.jpeg)
【LeetCode】202. Happy Number