LeetCode中关于快乐数的算法202,如何实现?

2026-05-26 12:511阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计373个文字,预计阅读时间需要2分钟。

LeetCode中关于快乐数的算法202,如何实现?

202. 快乐数 Ideas快乐数的判断逻辑实际上很简单,按照定义去循环执行即可。关键是,如果不是一个快乐数,怎么结束循环。我们猜测会有以下三种可能:

1.最终会得到 1

2.最终会进入一个循环,无法得到 1

3.可能存在其他情况,但这里不考虑

最终会得到 1 或进入一个循环。


​​202. 快乐数​​

Ideas

快乐数的判断逻辑其实挺简单的,按照定义去循环执行就可以了。

关键是如果不是快乐数怎么结束循环。

我们猜测会有以下三种可能:

  • 最终会得到 1
  • 最终会进入循环
  • 值会越来越大,最后接近无穷大
  • 其实我猜到了前两种情况,对于第三种情况,如果出现,那么这题就没法做了,既然这题能做,那就说明第三种情况不会出现。

    官方题解给的证明:

    Code

    Python

    class Solution:
    def isHappy(self, n: int) -> bool:
    visit = set()
    while n != 1 and n not in visit:
    visit.add(n)
    new = list(map(int, list(str(n))))
    for i, v in enumerate(new):
    new[i] = v ** 2
    n = sum(new)
    return n == 1


    if __name__ == '__main__':
    print(Solution().isHappy(19))



    LeetCode中关于快乐数的算法202,如何实现?

    本文共计373个文字,预计阅读时间需要2分钟。

    LeetCode中关于快乐数的算法202,如何实现?

    202. 快乐数 Ideas快乐数的判断逻辑实际上很简单,按照定义去循环执行即可。关键是,如果不是一个快乐数,怎么结束循环。我们猜测会有以下三种可能:

    1.最终会得到 1

    2.最终会进入一个循环,无法得到 1

    3.可能存在其他情况,但这里不考虑

    最终会得到 1 或进入一个循环。


    ​​202. 快乐数​​

    Ideas

    快乐数的判断逻辑其实挺简单的,按照定义去循环执行就可以了。

    关键是如果不是快乐数怎么结束循环。

    我们猜测会有以下三种可能:

  • 最终会得到 1
  • 最终会进入循环
  • 值会越来越大,最后接近无穷大
  • 其实我猜到了前两种情况,对于第三种情况,如果出现,那么这题就没法做了,既然这题能做,那就说明第三种情况不会出现。

    官方题解给的证明:

    Code

    Python

    class Solution:
    def isHappy(self, n: int) -> bool:
    visit = set()
    while n != 1 and n not in visit:
    visit.add(n)
    new = list(map(int, list(str(n))))
    for i, v in enumerate(new):
    new[i] = v ** 2
    n = sum(new)
    return n == 1


    if __name__ == '__main__':
    print(Solution().isHappy(19))



    LeetCode中关于快乐数的算法202,如何实现?