链接:202. 快乐数 - 力扣(LeetCode)
一,题目解析
图形结合:
二,算法原理
快慢双指针
1,定义快慢指针
2,慢指针每次移动一步,快指针一次移动两步
3,判断相遇时的值为1即为快乐数
三,编写代码
class Solution {
public int bitSum(int n){//返回n这个数每一位上的平方和
int sum=0;
while(n != 0){
int t = n % 10;
sum += t * t;
n /= 10;
}
return sum;
}
public boolean isHappy(int n) {
int slow = n,fast = bitSum(n);//slow和fast不相等
while(slow != fast){
slow = bitSum(slow);
fast = bitSum(bitSum(fast));
}
return slow == 1;//slow或者fast等于1就结束
}
}