Happy Number

来源:互联网 发布:大学生找工作知乎 编辑:程序博客网 时间:2024/06/15 07:04

题目:

Write an algorithm to determine if a number is "happy".

A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.

Example: 19 is a happy number

  • 12 + 92 = 82
  • 82 + 22 = 68
  • 62 + 82 = 100
  • 12 + 02 + 02 = 1
解题思路:

本题比较简单,题目要求对任意一个正整数,不断各个数位上数字的平方和,若最终收敛为1,则该数字为happy number,否则程序可能从某个数开始陷入循环。这道题目我们只用根据规则进行计算,并使用一个哈希表存储已经出现过的数字即可。

class Solution:
    # @param {integer} n
    # @return {boolean}
    def isHappy(self, n):
        dic = {}
        while n not in dic.keys():
            if n==1:
                return True
            dic[n], tmp = 1, 0
            for i in str(n):
                tmp += int(i)*int(i)
            n = tmp
        return False
        

0 0
原创粉丝点击