快乐数

Author Avatar
zzz1220 6月 03, 2019
  • 在其它设备中阅读本文章
👉👉本文共267字📘 读完共需1分钟⌚

快乐就完事了。

快乐数是什么

一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。

示例:

    输入: 19
    输出: true
    解释: 
    1^2 + 9^2 = 82
    8^2 + 2^2 = 68
    6^2 + 8^2 = 100
    1^2 + 0^2 + 0^2 = 1

编写一个算法来判断一个数是不是“快乐数”。

思路,不断的求输入数字每个位置平方和,然后看是否等于1,等于1就是快乐数,问题是,什么时候判断false。
答案就是出现无线循环的时候,也就是出现重复的数字,必定会进行下一次循环。

class Solution:
    def isHappy(self, n: int) -> bool:
        already = set()
        
        while n != 1:
            nums = 0
            while n > 0:
                temp = n % 10
                nums = nums + temp * temp
                n = n // 10
            if nums in already:
                return False
            else:
                already.add(nums)
                n = nums
        return True