0%

代码随想录第十六天

哈希表-快乐数

题目链接

这道题也是用C++的unordered_set比较简单,题目中提到无限循环,也就是sum是出现过的,也就陷入了无限循环了已经,这个时候就返回false。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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> sumSet;
while(1){
int sum = getSum(n);
if(sum == 1)return true;
if(sumSet.find(sum) != sumSet.end())
return false;
else
sumSet.insert(sum);
n = sum;
}


}
};