辽阳市网站建设百度地图关键词排名优化
文章目录
- 1、题目描述
- 2、思路1
- 代码
1、题目描述
快乐数。
编写一个算法来判断一个数 n 是不是快乐数。
快乐数定义为:对于一个正整数,每次不断将其转化成 每位数字的平方和。 判断是否最终和会为1,是1就是快乐数,否则不是。
2、思路1
这里我参考官方题解,讲解的很明白。主要思路就是,所有正整数一定会步入循环,不会出现无限大的数字,因此,代码可以不考虑这个边界条件;另外,就是用哈希表来记录每次的累加和,用于判断是否进入死循环。
代码
class Solution:def isHappy(self, n: int) -> bool:# func: 计算当前数字的平方和def get_number(num):num = str(num)sum = 0for char in num:sum += int(char)**2 # 这里用**,别用^ !!!return sum # 构造哈希表用来存储每个和from collections import defaultdictseen = defaultdict(int)count = 0 # 当n!=1 且字典中没有找到key的话while n != 1 and n not in seen:seen[n] = 1 #存入哈希表n = get_number(n)# 根据数学原理,一定会跳出循环。return True if n == 1 else False