2024/12/5 【雜湊表】202 快樂數

axuu發表於2024-12-06

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. //(整除運算): 整除運算子返回兩個數相除後的整數部分,即向下取整的結果。

相關文章