202. 快乐数
- 题号:力扣202
- 知识点:哈希
- 目标完成度:60/150
- 总结
题干:


思路: - 1.这个题的难点是无限循环时的处理,如何在无限循环时退出程序。
- 2.无限循环说明sum的值重复出现过,这样就好处理了。使用一个unordered_set集合来判断sum是否重复出现。
- 3.如果sum重复出现了,则为false
- 4.如果sum为1了,则为true
class Solution {
public:
int getSum(int n){
int sum = 0;
while(n){
sum += (n%10) * (n%10);
n = n/10;
}
return sum;
}
bool isHappy(int n) {
unordered_set<int> sum_set;
int sum = getSum(n);
while (1){
if(sum == 1){
return true;
}
if(sum_set.find(sum) != sum_set.end()){
return false;
}
else{
sum_set.insert(sum);
sum = getSum(sum);
}
}
}
};