202. Happy Number 快乐数
202. Happy Number 快乐数
n 如果满足各个位数字的平方和重新赋值给 n,循环操作n能为1,则初始的n为快乐数
本题考查对结果循环的检测,应用快慢指针检测环的思想来检测 n 经过多次迭代操作后是否存在循环
Floyd Cycle Detection
class Solution {
public:
bool isHappy(int n) {
int fast, slow;
fast = sum(n);
slow = n;
while(fast!=slow) {
slow = sum(slow); // slow 每次走一步
fast = sum(fast); // fast 每次走两步
fast = sum(fast);
}
return slow == 1;
}
int sum(int n) {
int s=0;
int tmp;
while(n) {
tmp = n%10;
s += tmp*tmp;
n/=10;
}
return s;
}
};