酒店为什么做网站,做网站的协议书和计划书,上海房产网签合同查询,网站制作流程是什么1、当需要快速判断某元素是否出现在序列中时#xff0c;就要用到哈希表了。 2、本文针对的总结题型为给定的序列或需要构造的序列中是否存在循环#xff0c;与 160. 相交链表、 141. 环形链表、142. 环形链表 II的题型一样。 202. 快乐数 这道题还考察如何对正整数求解各个位… 1、当需要快速判断某元素是否出现在序列中时就要用到哈希表了。 2、本文针对的总结题型为给定的序列或需要构造的序列中是否存在循环与 160. 相交链表、 141. 环形链表、142. 环形链表 II的题型一样。 202. 快乐数 这道题还考察如何对正整数求解各个位置数字的平方和 202. 快乐数
编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」定义为
对于一个正整数每一次将该数替换为它每个位置上的数字的平方和。
然后重复这个过程直到这个数变为 1也可能是 无限循环 但始终变不到 1。
如果这个过程 结果为1那么这个数就是快乐数。
如果 n 是 快乐数 就返回 true 不是则返回 false 。
示例 1:输入n 19输出true解释1^2 9^2 828^2 2^2 686^2 8^2 1001^2 0^2 1
题眼无限循环当同一个数字出现第二次之后就说明存在环
思路这道题和环形链表的题目一样模拟上述过程并用哈希表记录数值
class Solution:def isHappy(self, n: int) - bool:hashTable set()hashTable.add(n)while True:n self.getSum(n)if n 1:return Trueelif n in hashTable:return Falseelse:hashTable.add(n)# 这道题还考察如何对正整数求解各个位置数字的平方和def getSum(self, n: int) - int:s 0while n 0:s (n % 10) * (n % 10) # 总是获取数字的最后一位n // 10return sif __name__ __main__:obj Solution()while True:try:n int(input().strip().split()[1].strip())print(obj.isHappy(n))except EOFError:break