50. Pow(x, n)

第一眼觉得就是很典型可以bottom-upDP,写出来发现MLE,的确n大了就很消耗空间。改成Top-down应该可以省去一些exp值的计算,试了下。

class Solution:
    def myPow(self, x: float, n: int) -> float:
        if n == 0: return 1
        nv = abs(n)
        dp = [1 for t in range(nv+1)]
        
        dp[1] = x
        for i in range(2, nv+1):
            dp[i] = dp[i//2]*dp[i//2]*dp[i%2]
        
        return dp[-1] if n > 0 else 1.0/dp[-1]
            

Last updated

Was this helpful?