day06 代码随想录算法训练营 202. 快乐数
题目:202. 快乐数
我的感悟:
- 2024年了,你快不快乐?找找自己的原因。
理解难点:
- 分离数组
- 快乐数字的定义,
- 不快乐的数字会无限循环
代码难点:
- divmod用法,
- set用法
总结概括:
- 快乐就完事了!
代码示例:
class Solution:
def isHappy(self, n: int) -> bool:
recoed = set()
while True:
# 每次计算1次结果
n = self.get_num(n)
# 先判断能结束不
if n == 1:
return True
# 不能结束的话,每次都存进这个set中,并且判断不是无限循环的情况
if n not in recoed: # 如果set没有就存进去
recoed.add(n)
else: # 如果有,就说明是无限循环了,跳出循环并结束
return False
def get_num(self,n:int)->int:
# 分离数字,并返回平方和的结果
# 例如:输入457,输出90
# 因为 16+25+49 = 90
new_num = 0
while n:
n,r = divmod(n,10)
new_num += r**2
return new_num
通过截图:
资料:
题目链接/文章讲解:https://programmercarl.com/0202.%E5%BF%AB%E4%B9%90%E6%95%B0.html