【优选算法】202.快乐数

一,题目解析

【优选算法】202.快乐数_第1张图片

图形结合:【优选算法】202.快乐数_第2张图片 

【优选算法】202.快乐数_第3张图片

二,算法原理

【优选算法】202.快乐数_第4张图片

快慢双指针

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就结束
    }
}

你可能感兴趣的:(优选算法,算法,java,开发语言)