day06 代码随想录算法训练营 202. 快乐数

发布时间 2024-01-02 15:01:51作者: 山雨欲來風滿楼

题目:202. 快乐数

我的感悟:

  • 2024年了,你快不快乐?找找自己的原因。

理解难点:

  • 分离数组
  • 快乐数字的定义,
  • 不快乐的数字会无限循环

代码难点:

  • divmod用法,
  • set用法

总结概括:

  • 快乐就完事了!

代码示例:

class Solution:
    def isHappy(self, n: int) -> bool:
        recoed = set()
        while True:
            # 每次计算1次结果
            n = self.get_num(n)

            # 先判断能结束不
            if n == 1:
                return True

            # 不能结束的话,每次都存进这个set中,并且判断不是无限循环的情况
            if n not in recoed: # 如果set没有就存进去
                recoed.add(n)
            else:   # 如果有,就说明是无限循环了,跳出循环并结束
                return False    
            

    def get_num(self,n:int)->int:
        # 分离数字,并返回平方和的结果
        # 例如:输入457,输出90
        # 因为 16+25+49 = 90
        new_num = 0
        while n:
            n,r = divmod(n,10)
            new_num += r**2
        return new_num

通过截图:

资料:

题目链接/文章讲解:https://programmercarl.com/0202.%E5%BF%AB%E4%B9%90%E6%95%B0.html