题目解析
快乐数
算法原理
快慢双指针
1、定义快慢指针
2、慢指针每次向后移动一步,快指针每次向后移动两步。
3、判断相遇的时候的值
编写代码
class Solution {
public:
int num_sum(int n){
int sum = 0;
while(n!=0){
int t = n%10;
sum+=t*t;
n = n/10;
}
return sum;
}
bool isHappy(int n) {
//先去定义一个求每一位数的平方和的函数
int slow = n;//第一个数
int fast = num_sum(n);//第二个数
while(slow!=fast){
slow = num_sum(slow);//走一次
fast = num_sum(num_sum(fast));//走两次
}
return slow == 1;//slow == 1 或者 fast == 1
}
};