有人能告诉我这个python函数的空间复杂度是多少? 我相信这是O(1),但我的朋友们告诉我这是O(N)。
他们说O(N)的原因: 您正在for循环的每次迭代中创建一个新的'a'。
我之所以说O(1):你每次迭代并抛弃旧的'a'时都会创建一个新的'a'。
def hello(n):
for i in range(n):
a = 10
如果这是伪代码,空间复杂度是否相同?
答案 0 :(得分:2)
a 只是一个变量,在这里你指定一个带整数值,对于这一点,空间复杂度是O(1)。
但我认为衡量的关键是for i in range(n)
声明。
在 python2 中,因为range(n)
将创建一个包含n个元素的列表,所以空间复杂度为O(n)。
在 python3 中,range(n)
将返回一个迭代器(不创建整个n长度列表),因此空间复杂度为O(1)。