题目:

快乐数:19

解法-哈希表

思路:

1.
2.
3.

复杂度:

  • 时间复杂度:
  • 空间复杂度:

代码:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
class Solution
{
private:
/* data */
public:
int getSum(int n)
{
int sum = 0;
int temp = 0;
while (n > 0)
{
temp = n % 10;
temp *= temp;
sum += temp;
n/=10;
}
return sum;
}
bool isHappy(int n)
{
unordered_set<int> record;
int sum = 0;
while(1)
{
sum = getSum(n);
if(n==1){return true;}
if(record.find(sum) != record.end())
{//如果sum在record里面找到了,说明陷入了循环,直接返回false
return false;
}else{
record.insert(sum);
}
n=sum;
std::cout<<"sum= "<<sum<<std::endl;
}
//return true;
}
};

语法小点:

1.

*

*

*
2.

*

*

*