# 题目
https://leetcode-cn.com/problems/happy-number/
# 思路
使用快慢指针的思路寻找循环,快慢指针相遇表示已进入循环,最后判断循环的数是否为1,是则为快乐数,否则不是。
# 代码
class Solution {
public:
int cal_sum(int X){
int sum = 0;
while(X>0){
int temp = X%10;
sum += temp*temp;
X /=10;
}
return sum;
}
bool isHappy(int n) {
int slow = n;
int fast = cal_sum(n);
while(slow!=fast){
slow = cal_sum(slow);
fast = cal_sum(fast);
fast = cal_sum(fast);
}
return slow==1;
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23