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

这段Python代码的时间复杂度是多少?O(n*m)还是O(n log m)?

代码时间复杂度确认

先看这段代码:

def func5(n, m):
     i = 0
    while i < n:
        j = 1
        while j < m:
            print(i+j)
            j *= 3
        i += 1

正确的时间复杂度是 O(n log m),理由如下:

  • 外层循环:i从0递增到n-1,总共执行n次,这部分时间复杂度为O(n)。
  • 内层循环:j初始值为1,每次迭代乘以3,直到j >= m停止。假设内层循环执行k次,需满足 3^k >= m,推导得 k = log₃m。时间复杂度中对数的底数可忽略(不同底数的对数是常数倍关系),因此内层循环时间复杂度为O(log m)。

总时间复杂度是外层与内层的乘积,即O(n * log m)。O(n*m)的结论错误——只有当内层循环执行m次时才会达到该复杂度,但此处j是指数级增长,实际执行次数远小于m。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:12:37