LeetCode中关于快乐数的算法202,如何实现?
- 内容介绍
- 文章标签
- 相关推荐
本文共计373个文字,预计阅读时间需要2分钟。
202. 快乐数 Ideas快乐数的判断逻辑实际上很简单,按照定义去循环执行即可。关键是,如果不是一个快乐数,怎么结束循环。我们猜测会有以下三种可能:
1.最终会得到 1
2.最终会进入一个循环,无法得到 1
3.可能存在其他情况,但这里不考虑
最终会得到 1 或进入一个循环。
202. 快乐数
Ideas
快乐数的判断逻辑其实挺简单的,按照定义去循环执行就可以了。
关键是如果不是快乐数怎么结束循环。
我们猜测会有以下三种可能:
其实我猜到了前两种情况,对于第三种情况,如果出现,那么这题就没法做了,既然这题能做,那就说明第三种情况不会出现。
官方题解给的证明:
Code
Python
class Solution:def isHappy(self, n: int) -> bool:
visit = set()
while n != 1 and n not in visit:
visit.add(n)
new = list(map(int, list(str(n))))
for i, v in enumerate(new):
new[i] = v ** 2
n = sum(new)
return n == 1
if __name__ == '__main__':
print(Solution().isHappy(19))
本文共计373个文字,预计阅读时间需要2分钟。
202. 快乐数 Ideas快乐数的判断逻辑实际上很简单,按照定义去循环执行即可。关键是,如果不是一个快乐数,怎么结束循环。我们猜测会有以下三种可能:
1.最终会得到 1
2.最终会进入一个循环,无法得到 1
3.可能存在其他情况,但这里不考虑
最终会得到 1 或进入一个循环。
202. 快乐数
Ideas
快乐数的判断逻辑其实挺简单的,按照定义去循环执行就可以了。
关键是如果不是快乐数怎么结束循环。
我们猜测会有以下三种可能:
其实我猜到了前两种情况,对于第三种情况,如果出现,那么这题就没法做了,既然这题能做,那就说明第三种情况不会出现。
官方题解给的证明:
Code
Python
class Solution:def isHappy(self, n: int) -> bool:
visit = set()
while n != 1 and n not in visit:
visit.add(n)
new = list(map(int, list(str(n))))
for i, v in enumerate(new):
new[i] = v ** 2
n = sum(new)
return n == 1
if __name__ == '__main__':
print(Solution().isHappy(19))

