LeetCode - 202. 快乐数
题目
202. 快乐数 - 力扣(LeetCode)
思路
先模拟出所有的情况
根据情况1和情况2发现,无论哪种情况,都能成环,只是一个是环里都是1,一个是环里不为1,所以这里仅需判断能否成环,然后再判断环里是否为1 即可判断出快乐数
读者可能出现的错误写法
class Solution {
public:int bitSum(int n){int sum = 0;while(n){int t = n%10;sum += t*t;n=n/10;}return sum;}bool isHappy(int n) {int slow = n;int fast = n;while(slow != fast){slow = bitSum(slow);fast = bitSum(bitSum(fast));}return slow == 1;}
};
这里的fast不能初始化成n,因为初始化成n循环就进不去了,应该是初始化成n的下一位,也就是bitSum(n);
正确写法
class Solution {
public:int bitSum(int n){int sum = 0;while(n){int t = n%10;sum += t*t;n=n/10;}return sum;}bool isHappy(int n) {int slow = n;int fast = bitSum(n);while(slow != fast){slow = bitSum(slow);fast = bitSum(bitSum(fast));}return slow == 1;}
};