【问题标题】:Time Complexity of a function that iterates over n repeated digits迭代 n 个重复数字的函数的时间复杂度
【发布时间】:2020-12-16 00:11:15
【问题描述】:

假设我有一个函数

def f(n):

   for x in range(int("1" * n)):
       ....  # assume this step is o(1)

这个函数接受一个整数 n,然后迭代 1 重复 n 次。

示例。

对于 n = 5

for i in range(11111): 
    pass
   

对于 n = 4

for i in range(1111):
    pass

输入 n 的函数的时间复杂度是多少?或者您将如何计算?

如果问题不清楚,我们深表歉意,并感谢所有帮助。

【问题讨论】:

  • 那么时间复杂度应该是n,因为循环重复了n 次?
  • 不,如果 n = 3,则循环重复 111 次等。@Flame
  • 哦,我知道它现在做了什么让我想一想
  • 似乎复杂度接近10^(n-1), 4 ~ 1000, 5 ~ 10000, 6 ~ 1000000, 所以指数时间
  • @Flame 这就是我的怀疑,但是在计算时间复杂度时可以使用近似值吗?

标签: function loops methods time-complexity big-o


【解决方案1】:

给定值n 的输入,迭代次数将为(10^n - 1)/9
因此,每次添加输入,迭代次数都会增加 10 倍。

还要注意n不是输入大小,而是输入的值,所以时间复杂度是双指数的,因为输入大小在n中是对数的。

【讨论】:

  • 啊,这确实是一个精确的公式 :) 我忘记了 10/9
  • 哇,谢谢。迭代次数的好公式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-03
  • 2018-10-23
  • 2021-12-07
  • 1970-01-01
  • 2021-10-01
  • 1970-01-01
  • 2016-12-20
相关资源
最近更新 更多