1. 程式人生 > >leetcode202:快樂數

leetcode202:快樂數

思想:

定義字典record記錄正整數每個位置上的數字的平方和,每次計算出來的平方和都儲存。若平方和出現重複則不是快樂數,反之則是。變數sq_num記錄每次的平方和。將n先求餘10得到個位上的數並平方,然後整除10得到去除個位上數的其他數,n其次進行迴圈直到結束計算出平方和,然後判斷平方和有沒有出現過,若沒有則繼續算,反之則返回false。

class Solution:
    def isHappy(self, n):
        """
        :type n: int
        :rtype: bool
        """
        record = {}
        sq_sum = 0
        while n != 1:
            sq_sum = 0
            sub_num = n
            while sub_num > 0:
                sq_sum += (sub_num % 10) * (sub_num % 10)
                sub_num //= 10
            if sq_sum in record:
                return False
            else:
                record[sq_sum] = 1
            n = sq_sum
        return True

都是大佬們的思想,小菜鳥還是不行的