Python 中的快乐数


这里我们将了解如何判断一个数字 n 是快乐数。快乐数是一个数字,以任意正整数开头,将这个数字替换为其各数字平方和,这个过程将重复进行,直到它变为 1,否则它将无限循环。当找到 1 时,这些数字将是快乐数。

假设数字是 19,则输出将为 true,因为该数字是快乐数。从 19 开始,我们可以得到

12 + 92 = 82

82 + 22 = 68

62 + 82 = 100

12 + 02 + 02 = 1

要解决这个问题,我们将按照以下步骤进行 −

  • 这里我们将使用动态规划方法,并使用递归来解决这个问题
  • 基本情况是,当 n = 1,则返回 true
  • 当 n 已经被访问过,则返回 false
  • 标记 n 为已访问
  • n := n 为字符串,l := n 中所有数字的列表
  • temp := 所有数字的平方和
  • 使用 temp 和 visited 列表作为参数递归调用函数

示例

让我们看看以下实现,以获得更好的理解 −

 在线演示

class Solution(object):
   def isHappy(self, n):
      """
      :type n: int
      :rtype: bool
      """
      return self.solve(n,{})
   def solve(self,n,visited):
      if n == 1:
         return True
      if n in visited:
         return False
      visited[n]= 1
      n = str(n)
      l = list(n)
      l = list(map(int,l))
      temp = 0
      for i in l:
         temp += (i**2)
      return self.solve(temp,visited)
ob1 = Solution()
op = ob1.isHappy(19)
print("Is Happy:",op)

输入

19

输出

Is Happy: True

更新于: 28-4-2020

2k+ 浏览

开启你的职业生涯

完成课程,获得认证

开始
广告
© . All rights reserved.