簡體   English   中英

python解決方案中超出了時間限制

[英]Time Limit exceeded in python solution

我試圖解決 Leetcode 問題Happy Number ,但我似乎陷入了一個奇怪的 Time Limit Exceeded Error 錯誤。

我的代碼:

class Solution:
    def isHappy(self, n: int) -> bool:
        def simu(n):
            sums = 0
            while n>0:
                s = n%10
                n = n//10
                sums=sums+(s**2)
            if sums != 1:
                simu(sums)
            return True
        while True:
            try:
                return simu(n)
            except RecursionError:
                return False

知道如何克服這個嗎?

嘗試直到出現RecursionError是一個非常糟糕的主意。 相反,我能想到的一種解決方案是跟蹤以前失敗的數字,並在獲得已經失敗的數字后立即停止進一步嘗試。 因為,你肯定知道同樣的事情會再次發生。

class Solution:
    def transform(self, n: int) -> int:
        s = 0
        while n > 0:
            d = n % 10
            s += d * d
            n = n // 10
        return s

    def isHappy(self, n: int) -> bool:
        failed_hist = set()  # maybe you can preload this with some already known not-happy numbers
        while n not in failed_hist:  # continue as long as `n` has not failed before
            if n == 1:
                return True
            failed_hist.add(n)  # remember this failed !
            n = self.transform(n)  # transform `n` to it's next form
        return False  # loop broke, i.e. a failed `n` occured again

這個想法是展示一個沒有蠻力的解決方案。 也許可以有更好的解決方案,例如,如果那些快樂的數字有一些特殊的數學屬性等......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM