You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现Pow(x,n)时优化时空复杂度解决超时问题

Python迭代实现Pow(x,n)的性能优化方案

初始版本存在的问题

你最初的实现使用列表存储所有中间计算结果,会产生O(n)的不必要内存开销,代码如下:

class Solution:
    def myPow(self, x: float, n: int) -> float:
        temp = [];
        span = range(1,abs(n))
        if n ==0:
            return 1
        if abs(n)==1:
            temp.append(x)
        else:
            for y in span:
                if y == 1:
                    temp = []
                    temp.append(x*x)
                else:
                    temp.append(temp[-1] * x)
        if(n < 0):
            return 1/temp[-1]
        else:
            return temp[-1]

你后续做的第一步优化方向是对的:用单个变量替代列表存储临时计算值,把空间复杂度降到了O(1),修改后的代码如下:

class Solution:
    def myPow(self, x: float, n: int) -> float:
        span = range(1,abs(n))
        if n ==0:
            return 1
        if abs(n)==1:
            temp = x
        else:
            for y in span:
                if y == 1:
                    temp = x*x
                else:
                    temp = temp * x
        if(n < 0):
            return 1/temp
        else:
            return temp

这版代码的核心瓶颈是时间复杂度为O(n),需要逐次做乘法,当n取2147483647这类极大值时,循环次数超过20亿次,必然触发超时。

最优优化思路:迭代版快速幂

不需要引入任何特殊数据结构,仅通过指数二进制拆分就能把时间复杂度降到O(log n)——对于n=2147483647的场景,仅需要31次循环即可完成计算,完全不会超时。

核心逻辑

  • 任何整数指数都可以拆分为二进制位的和,比如n=5(二进制101)等价于4+1,因此x^5 = x^4 * x^1
  • 迭代过程中持续对底数做平方操作,对应指数权重每次翻倍
  • 遍历指数的二进制位,只要当前位为1,就把当前权重对应的底数乘到最终结果里
  • 负数指数可以提前转换:把x取倒数,n转为正整数后再统一计算

优化后代码

class Solution:
    def myPow(self, x: float, n: int) -> float:
        # 统一处理负指数场景
        if n < 0:
            x = 1 / x
            n = -n
        res = 1.0
        while n > 0:
            # 当前二进制位为1,累加当前权重的幂值到结果
            if n & 1:  # 等价于n%2 ==1,位运算速度更快
                res *= x
            # 底数平方,权重翻倍
            x *= x
            # 指数右移一位,等价于n = n//2
            n >>= 1
        return res

优化收益

  • 空间复杂度保持O(1),仅使用3个变量,无额外内存开销
  • 时间复杂度降至O(log n),相比原始O(n)实现,大输入场景下性能提升超千万倍
  • 代码逻辑更简洁,不需要额外写分支处理n=0、n=±1等边界情况,循环逻辑天然覆盖所有场景

内容的提问来源于stack exchange,提问作者Noble Eugene

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.15 16:16:02