2024/12/5 【哈希表】202 快乐数

202. 快乐数 - 力扣(LeetCode)

解法1:

(1)把数字n转换为字符串,从而得到每一位的数值。

事先不知道数字n有多少位。

(2)把每一次求平方和得到的数存到集合中,从而避免数字重复导致的循环。

class Solution:
    def calSquare(self, num):
        str_n = str(num)
        sum = 0
        for i in str_n:
            sum += int(i) ** 2return sum

    def isHappy(self, n: int) -> bool:
        seen = set()
        while n != 1 and n not in seen:
            seen.add(n)
            n = self.calSquare(n)  
        return n == 1  

解法2:改进的calSquare函数

class Solution:
    def calSquare(self, n):
        sum = 0
        while n > 0:
            digit = n % 10 #取最后一位
            sum += digit * digit
            n = n // 10 #去掉最后一位
        return sum

    def isHappy(self, n: int) -> bool:
        seen = set()
        while n != 1 and n not in seen:
            seen.add(n)
            n = self.calSquare(n)  
        return n == 1  

在 Python 中,%// 是两个常用的算术运算符,它们的功能如下:

  1. %(取余或模运算): 取余运算符返回两个数相除后的余数。

  2. //(整除运算): 整除运算符返回两个数相除后的整数部分,即向下取整的结果。

divmod() 是 Python 的一个内置函数,用于同时计算两个数的 余数,并以元组的形式返回结果。

total_seconds = 125
minutes, seconds = divmod(total_seconds, 60)
print(f"{minutes} 分钟 {seconds} 秒")  # 输出: 2 分钟 5 秒

divmod(a, b)//% 的组合,一次调用返回 (a // b, a % b)

posted @ 2024-12-06 12:44  axuu  阅读(2)  评论(0编辑  收藏  举报