力扣 202 快乐数
首先来分析什么样的数是快乐数,
解题思路:
1)定义快慢指针 ; 2)快指针走两步,慢指针走一步 ;3)两个指针相遇时判断相遇的数值是否为1。
怎样处理 取各分位数的平方和?
int isSum(int n)
{
int sum = 0;//用来记录各分位的平方和
while(n !=0)
{
int t = n%10;
sum += t*t;
n/=10;
}
return sum;
}
代码实现:
class Solution {
public:
int isSum(int n)
{
int sum = 0;
while(n !=0)
{
int t = n%10;
sum += t*t;
n /=10;
}
return sum;
}
bool isHappy(int n) {
int slow = isSum(n);
int fast = isSum(isSum(n));
while(fast != slow)
{
fast = isSum(isSum(fast)) ;
slow = isSum(slow);
}
return slow ==1;
}
};