202. 快乐数
这道题刚看到的时候,首先是想到循环很多次(这个次数是用自己定义的一个很大的数),但是想着不科学,而是玄学。
于是看了卡哥思路
里面很关键的一句话就是:题目中说了会无限循环,那么也就是说求和的过程中,sum会重复出现,这对解题很重要!所以这道题目使用哈希法,来判断这个sum是否重复出现,如果重复了就是return false, 否则一直找到sum为1为止。
代码如下:
class Solution {
public:
int getSum(int n)
{
int sum = 0;
while (n)
{
sum += (n % 10) * (n % 10);
n /= 10;
}
return sum;
}
bool isHappy(int n) {
unordered_set<int> set;
while (1)
{
int sum = getSum(n);
if (sum == 1)
return true;
if (set.find(sum) != set.end())
return false;
else
set.insert(sum);
n = sum;
}
}
};