leetcode:202.快乐数
编辑
31
2024-04-02
Leetcode题目链接:202. 快乐数
题目描述:
编写一个算法来判断一个数 n
是不是快乐数。
「快乐数」 定义为:
对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
如果这个过程 结果为 1,那么这个数就是快乐数。
如果 n
是 快乐数 就返回 true
;不是,则返回 false
。
解题思路:
快慢指针
快指针每次走两步,慢指针每次走一步,当二者相等时,即完成了一个循环周期。
判断是否因为 1 而引起循环
若是则为快乐数,反正则不是快乐数
我的答案:
class Solution {
public:
int calculateSum(int n) {
int sum = 0;
while(n > 0){
int num = n % 10;
sum += num * num;
n /= 10;
}
return sum;
}
bool isHappy(int n) {
int slow = n, fast = n;
do{
slow = calculateSum(slow);
fast = calculateSum(calculateSum(fast));
}while(slow != fast);
return slow == 1;
}
};
提交结果:
- 0
- 0
-
赞助
AliPayWeChat Pay -
分享