202.快乐数

4/16/2021 Leetcode

# 题目

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