1、题目描述
编写一个算法来判断一个数是不是“快乐数”。
一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。
示例:
输入: 19输出: true解释: 12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 = 1
2、题解
2.1、解法一
class Solution(object): count = 0 def isHappy(self, n): """ :type n: int :rtype: bool """ if n == 1: return True l = [] while n: a,b = divmod(n,10) l.append(b) n = a # if len(l) ==1: # return False # else: self.count += 1 if self.count >100: return False l.reverse() print(l) ret = 0 for i in l: ret += i**2 if ret == 1: return True else: ret = self.isHappy(ret) return ret
2.2、解法二
class Solution(object): def isHappy(self, n): """ :type n: int :rtype: bool """ temp = [] def get_add(n): ret = 0 while n != 0: g = n % 10 ret += g ** 2 n = int(n / 10) return ret while True: n = get_add(n) if n == 1: return True elif n in temp: return False else: temp.append(n)