2024/12/5 【哈希表】202 快乐数
解法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 中,%
和 //
是两个常用的算术运算符,它们的功能如下:
-
%
(取余或模运算): 取余运算符返回两个数相除后的余数。 //
(整除运算): 整除运算符返回两个数相除后的整数部分,即向下取整的结果。
divmod()
是 Python 的一个内置函数,用于同时计算两个数的 商 和 余数,并以元组的形式返回结果。
total_seconds = 125 minutes, seconds = divmod(total_seconds, 60) print(f"{minutes} 分钟 {seconds} 秒") # 输出: 2 分钟 5 秒
divmod(a, b)
是 //
和 %
的组合,一次调用返回 (a // b, a % b)
。