

由图可知,其实这也是一个判断循环的过程,要用到快慢指针,且相遇后,若在全为1的循环里,那么就是快乐数,若相遇后不为1,说明这不是快乐数。
- int Sum(int n)
- {
- int sum=0;
- while(n)
- {
- int t=n%10;
- sum+=t*t;
- n/=10;
- }
- return sum;
- }
- bool isHappy(int n) {
- int slow=n,fast=Sum(n);
- while(slow!=fast)
- {
- slow=Sum(slow);
- fast=Sum(Sum(fast));
- }
- return slow==1;
- }
快满指针的变式