本文最后更新于631 天前,其中的信息可能已经过时,如有错误请发送邮件到tomding1065@gmail.com
题目链接/文章讲解:https://programmercarl.com/0202.%E5%BF%AB%E4%B9%90%E6%95%B0.html
1.我真的这个题我真是服了,在构造这个求和的函数时候,直接我就蒙了,我还在想这个是不是个死循环,结果我自己一测试还不是死循环,我的思路发生了问题,我还在想这个快乐数不是循环计算每一次sum之后的各个位上的平方和吗,怎么现在是这样而且,例如123 按照代码里的求和的函数,这个就只循环3次而且sum也不是1呀,我直接就蒙了,估计是这一早上一直在看这个unordered_set直接我就是吐了,我这个基础真是着急啊。不墨迹了
2,正如:关于哈希表,你该了解这些!
(opens new window)中所说,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法了。
CPP
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;
}
}
};