JAVA_双指针练习_快乐数

题目:

JAVA_双指针练习_快乐数_第1张图片

解析:

           先将一个数的各个位的平方加起来,将它赋值给一个值。

           然后创建两个指针变量,一个slow指向第一个位置的值,一个fast直线第二个位置的值,不管该数是不是快乐数,他们都会进入一个循环,如下所示:

JAVA_双指针练习_快乐数_第2张图片

JAVA_双指针练习_快乐数_第3张图片

那既然是一个循环,那他们肯定会相遇,如果相遇的那个值是1,那么就是快乐数。

        

代码:

class Solution {
    public int bitSum(int n){
        int sum=0;
        while(n!=0){
            int s=n%10;
            sum+=s*s;
            n/=10;
        }
        return sum;
    }

    public boolean isHappy(int n) {
        int slow=n;
        int fast=bitSum(n);
        while(slow!=fast){
            slow=bitSum(slow);
            fast=bitSum(bitSum(fast));
        }
        return slow==1;
    }
}

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