【问题标题】:Run Time Complexity vs Memory Complexity运行时复杂度和内存复杂度
【发布时间】:2021-06-13 21:29:31
【问题描述】:

我正在使用以下代码:

n = input()
data = input()

out = [0] * 10

for i in range(len(data)):


    if (data[i] == 'L'):
        for j in range(0, 10, 1):
            if (out[j] == 0):
                out[j] = 1
                break
    elif (data[i] == 'R'):
        for k in range(9, -1, -1):
            if (out[k]== 0):
                out[k] = 1
                break
    else:
        out[int(data[i])] = 0
    #print (str(data[i]) + " "+ str(out))
for x in out:
    print(x, end = '')  
  1. 如何确定该程序的运行时间复杂度。我已经读过 for 循环需要 O(N),那么这个程序是否会将其作为它的运行时间复杂度?

  2. 如何确定此程序的内存复杂度?

我已经在网上阅读了这两个概念,但我无法理解它们,如果这些是基本问题,请见谅。

【问题讨论】:

  • for 循环需要多长时间来迭代其可迭代对象。它并不总是 O(n)。例如,for x in itertools.product(data, data): 是 O(n^2),忽略循环体中发生的事情,因为在 data 与自身的笛卡尔积中有 O(n^2) 个元素。

标签: python time-complexity


【解决方案1】:
  1. 假设 for 循环中的所有内容都需要 O(1) 时间,For 循环确实需要 O(N) 时间。这一切都取决于。您在 for 循环中的代码确实会在恒定时间内运行,因为它始终是 10 个操作,或者其他。您的整体运行时间为 o(n)

  2. 内存复杂度通常称为空间复杂度,即运行代码时需要占用多少额外空间。由于您实际上不再使用任何数组或空间,因为一切都在 out 数组中工作,因此您的空间复杂度为 o(1)。例如,如果您有另一个大小不断增加的数组,那么您的空间复杂度将是 o(n),因为它会随着大小而增长。

【讨论】:

    猜你喜欢
    • 2012-08-14
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 2013-09-12
    相关资源
    最近更新 更多