面试150 快乐数
思路
我们拿案例2为什么不是快乐数一直计算可以发现,会经过一个循环平方和得到4。因此我们需要一个集合去记录每次求和的值,如果求和过程出现了1则说明是快乐数,如果出现了已经在集合中出现过的数字,则不是快乐数。
class Solution:def isHappy(self, n: int) -> bool:if n<1:return Falseflag_set=set()while n not in flag_set:news_sum=0flag_set.add(n)while n:news_sum+=(n%10)*(n%10) #从个位数开始计算n=n//10if news_sum==1:return Trueelse:n=news_sum #新数字重新进行循环计算return False