Note:
一共三种情况:
1、算到1
2、进入死循环
3、单调递增
其中,3是不会发生的,因为可以考虑每位最大之后的下一个数字是多少,就可看出来
3位数的时候,最大是 999 那么他计算一次之后就是 243
所以说,不会无限制的增长下去的
那么就看前两种情况即可
代码如下:
class Solution {
public:
bool isHappy(int n) {
unordered_set<int> s;
int ans = 0;
while(ans != 1){
ans = 0;
while(n){
int a = n % 10;
n /= 10;
ans += a * a;
}
n = ans;
if(s.count(n))
return false;
s.insert(n);
}
return true;
}
};