題目描述
編寫一個算法來判斷一個數是不是“快樂數”。
一個“快樂數”定義爲:對於一個正整數,每一次將該數替換爲它每個位置上的數字的平方和,然後重複這個過程直到這個數變爲 1,也可能是無限循環但始終變不到 1。如果可以變爲 1,那麼這個數就是快樂數。
————
不是快樂數的數稱爲不快樂數(unhappy number),所有不快樂數的數位平方和計算,最後都會進入 4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4 的循環中。
算法
class Solution:
def isHappy(self, n: int) -> bool:
def f(n):
ls=list(map(int,str(n)))
rec=0
for i in ls:
rec+=i*i
return rec
while True:
n=f(n)
if n in[4,16,37,58,89,145,42,20,4]:return False
if n==1:return True
執行用時 :36 ms, 在所有 Python3 提交中擊敗了78.74%的用戶
內存消耗 :13.5 MB, 在所有 Python3 提交中擊敗了31.11%的用戶