
第202题. 快乐数编写一个算法来判断一个数 n 是不是快乐数。「快乐数」 定义为对于一个正整数每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1那么这个数就是快乐数。如果 n 是 快乐数 就返回 true 不是则返回 false 。示例 1输入n 19输出true解释12 92 8282 22 6862 82 10012 02 02 1示例 2输入n 2输出false提示1 n 231 - 1实现代码Python:classSolution(object):defisHappy(self,n): :type n: int :rtype: bool recordset()whilennotinrecord:record.add(n)sstr(n)new0foriins:newint(i)**2ifn1:returnTrueelse:nnewreturnFalse分析判断快乐数的关键在于过程中是否会进入「无限循环」即某个数重复出现。因为如果不是快乐数计算平方和的过程一定会陷入循环不会无限增大所以只需检测循环即可。实现步骤1.计算数字的各位平方和将数字拆分为每一位计算平方后求和如 19 → 1²9²822.检测循环用「哈希集合」记录所有出现过的数若新计算的数是 1 → 快乐数若数已在集合中 → 循环不是快乐数。