首页 > 其他分享 >leetcode-快乐树

leetcode-快乐树

时间:2024-03-07 15:45:29浏览次数:22  
标签:digit 数字 迭代 int res 平方和 快乐 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或者已经在集合中出现过

 

标签:digit,数字,迭代,int,res,平方和,快乐,leetcode
From: https://www.cnblogs.com/yyyjw/p/18059050

相关文章

  • 代码随想录算法训练营day14 | leetcode 144. 二叉树的前序遍历、145. 二叉树的后序遍
    目录题目链接:144.二叉树的前序遍历-简单题目链接:145.二叉树的后序遍历-简单题目链接:94.二叉树的中序遍历-简单递归三要素:确定递归函数的参数和返回值:确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数,并且还要明确每次递归的返回值是什么进而确定递归......
  • leetcode-15. 三数之和 - 双指针问题
    classSolution:defthreeSum(self,nums:List[int])->List[List[int]]:nums.sort()res=[]mem=set()foriinrange(len(nums)):ifnums[i]>0:breakifi>0andnum......
  • LeetCode75 1768.交替合并字符串
    1768.交替合并字符串https://leetcode.cn/problems/merge-strings-alternately/description/?envType=study-plan-v2&envId=leetcode-75publicStringmergeAlternately(Stringword1,Stringword2){intlen1=word1.length();intlen2=word2.length()......
  • leetcode--901. 股票价格跨度(单调栈)
    记录10:002024-3-6https://leetcode.cn/problems/online-stock-span/维护一个单调递减的栈s,并且也要一个记录个数的栈count每次来一个数据,这个数据如果比s栈顶数据小,就直接放入s,并在count中记录下它的个数1如果这个数据比s栈顶数据大,就需要弹出s和count的top,来保证s是递减的......
  • leetcode--1976. 到达目的地的方案数(最短路)
    记录12:052024-3-5https://leetcode.cn/problems/number-of-ways-to-arrive-at-destination/通过最短路找到从源点到目标点距离,在更新的过程中,对某个点记录下可以达到最短距离的父亲节点,然后从目标点往回dp就可以了(有种逆向拓扑排序的感觉)当然这是不必要的,在更新最短距离的......
  • 代码随想录算法训练营day13 | leetcode 239. 滑动窗口最大值、347. 前 K 个高频元素
    目录题目链接:239.滑动窗口最大值-困难题目链接:347.前K个高频元素-中等题目链接:239.滑动窗口最大值-困难题目描述:给你一个整数数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k个数字。滑动窗口每次只向右移动一位。......
  • 【LeetCode】389_找不同_C
    题目描述给定两个字符串s和t,它们只包含小写字母。字符串t由字符串s随机重排,然后在随机位置添加一个字母。请找出在t中被添加的字母。https://leetcode.cn/problems/find-the-difference/description/示例示例1:输入:s="abcd",t="abcde"输出:"e"解释:'e'是那......
  • Leetcode刷题第十六天-链表
    24:两两交换链表中的节点链接:24.两两交换链表中的节点-力扣(LeetCode)虚拟头节点#Definitionforsingly-linkedlist.#classListNode:#def__init__(self,val=0,next=None):#self.val=val#self.next=nextclassSolution:defswap......
  • 【LeetCode】1768_交替合并字符串_C
    题目描述给你两个字符串word1和word2。请你从word1开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。返回合并后的字符串。示例示例1:输入:word1="abc",word2="pqr"输出:"apbqcr"解释:字符串合并情......
  • 【LeetCode】383_赎金信_C
    题目描述给你两个字符串:ransomNote和magazine,判断ransomNote能不能由magazine里面的字符构成。如果可以,返回true;否则返回false。magazine中的每个字符只能在ransomNote中使用一次。示例示例1:输入:ransomNote="a",magazine="b"输出:false示例2:输入:ran......