算法——快乐数

202. 快乐数 - 力扣(LeetCode)

算法——快乐数_第1张图片

算法——快乐数_第2张图片

由图可知,其实这也是一个判断循环的过程,要用到快慢指针,且相遇后,若在全为1的循环里,那么就是快乐数,若相遇后不为1,说明这不是快乐数。

int Sum(int n)
    {
        int sum=0;
        while(n)
        {
            int t=n%10;
            sum+=t*t;
            n/=10;
        }
        return sum;
    }
bool isHappy(int n) {
    int slow=n,fast=Sum(n);
    while(slow!=fast)
    {
        slow=Sum(slow);
        fast=Sum(Sum(fast));
    }
    return slow==1; 
}

快满指针的变式

你可能感兴趣的:(算法)