题目提示会循环,当算到一定次数之后就会出现之前出现的结果,所以这个时候就可以判断这个数不是我们想要的数。如果没出现循环一直计算到为1为止
使用unordered_set
class Solution {
public:
int getSum(int n)
{
int sum = 0;
int temp;
while(n)
{
temp = n % 10;
sum += temp*temp;
n /= 10;
}
return sum;
}
bool isHappy(int n) {
unordered_set<int> sum_map;
while(n != 1)
{
if(sum_map.find(n) != sum_map.end())
return false;
sum_map.insert(n);
n = getSum(n);
}
return true;
}
};