应用题-哈希表-快乐数

管理员
补充: 数学上已经证明:各位平方和的结果只会落在有限范围内,最终要么到 1,要么进入循环。 ``` 证明思路 一个 3 位数最大是 999,各位平方和 = 243 一个 4 位数最大是 9999,各位平方和 = 324 随着位数增加,平方和增长远慢于数字本身 所以数字会迅速缩小到 3 位数以内 在 1-243 这个有限范围内,必然会出现重复或到达 1 ``` ```python class Solution: # 快乐数: # 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 # 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 # 如果这个过程 结果为 1,那么这个数就是快乐数。 def isHappy(self, n: int) -> bool: repeat = set() # 如果数字已经出现过 再进行下去也只是无限循环 while n != 1: repeat.add( n ) x = 0 # 拆分每一位 while n != 0: x += ( n % 10 ) * ( n % 10 ) n //= 10 n = x if n in repeat: return False return True ```
评论 0

发表评论 取消回复

Shift+Enter 换行  ·  Enter 发送
还没有评论,来发表第一条吧