来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/happy-number
编写一个算法来判断一个数是不是“快乐数”。
一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。
1、关键是跳出无限循环
2、快乐数判断有固定规律,不快乐数会陷入重复数的循环,且不包含1(如果是1就快乐了呀!)
3、判断跳出循环时是不是1 是1就快乐 不是1不快乐
4、快慢指针跳出无限循环,类似判断环形链表
class Solution { public boolean isHappy(int n) { int fast; int slow; fast=slow=n; do{ slow = sum(slow); fast = sum(fast); fast = sum(fast); }while(fast!=slow); if(fast==1) return true; else return false; } int sum(int num) { int sum=0; while(num!=0) { sum+=(num%10)*(num%10); num = num/10; } return sum; } }