leetcode-快乐树
自己写的:
class Solution: def isHappy(self, n: int) -> bool: n_temp = n # 用n_temp保存当前的数字,以便迭代过程中使用 count = 0 # 用于计数,避免无限循环,设定最多迭代10次 while count < 10: # 最多迭代10次 n_str = str(n_temp) # 将当前数字转换为字符串,以便分解每一位数字 n_list = [] # 用于存储每一位数字的列表 res = 0 # 用于存储每位数字的平方和 # 将当前数字的每一位分解并存储到列表中 for i in n_str: n_list.append(int(i)) # 计算每位数字的平方和 for i in n_list: res += i**2 if res == 1: return True # 如果平方和为1,表示是快乐数,返回True else: n_temp = res # 更新当前数字为平方和,准备下一轮迭代 count += 1 # 增加迭代次数 return False # 如果迭代10次仍未找到平方和为1的情况,返回False,表示不是快乐数
gpt改进:
class Solution: def isHappy(self, n: int) -> bool: # 辅助函数:计算每位数字的平方和 def get_digit_square_sum(num): return sum(int(digit)**2 for digit in str(num)) seen = set() # 用一个集合来存储已经出现过的数字,避免无限循环 # 当数字不等于1且未出现在集合中时循环 while n != 1 and n not in seen: seen.add(n) # 将当前数字加入集合 n = get_digit_square_sum(n) # 计算下一轮迭代的数字 return n == 1 # 判断循环结束的条件是数字变为1或者已经在集合中出现过
判断是否是无限循环:
class Solution: def isHappy(self, n: int) -> bool: n_temp = n # 用 n_temp 保存当前的数字,以便迭代过程中使用 seen = set() # 用一个集合来存储已经出现过的数字,避免无限循环 while True: # 无限循环,直到返回True或False n_str = str(n_temp) # 将当前数字转换为字符串,以便分解每一位数字 n_list = [] # 用于存储每一位数字的列表 res = 0 # 用于存储每位数字的平方和 # 将当前数字的每一位分解并存储到列表中 for i in n_str: n_list.append(int(i)) # 计算每位数字的平方和 for i in n_list: res += i**2 if res == 1: return True # 如果平方和为1,表示是快乐数,返回True elif res in seen: return False # 如果平方和已经出现过,表示陷入循环,返回False else: print(f"res:{res}") # 打印当前平方和,可选的调试语句 n_temp = res # 更新当前数字为平方和,准备下一轮迭代 seen.add(n_temp) # 将当前数字加入集合,表示已经处理过 # 注意:在实际使用时,可能需要去掉 print 语句以减少输出信息,除非进行调试。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)