思路:
正如:关于哈希表,你该了解这些! (opens new window)中所说,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法了。
还是考unordered_set的应用吧。
储备:
问题重点:
最后:
class Solution {
public:
int get(int n) {
int sum=0;
while (n) {
sum += (n%10)*(n%10);//只是拿出来。下一步再消掉
n/=10;//每一位去右移
}
return sum;
}
bool isHappy(int n) {
unordered_set<int> ust;
while (1) {
int sum=get(n);//求出每个位置上数字的平方
//只有两种可能:1、是快乐数。2、进入了无限循环
if (sum==1) return true;
//还没无限循环的话就加入集合。
if (ust.find(sum)!=ust.end()) return false;
else ust.insert(sum);
n=sum;//更新
}
}
};

186

被折叠的 条评论
为什么被折叠?



