【发布时间】:2021-02-12 21:41:34
【问题描述】:
for i in range(n - length + 1):
minimumvalue = min(diskSpace[i:i + length])
minimumList.insert(len(minimumList), minimumValue)
return(max(minimumArray)
因此,对于范围内的 i 需要 O(n) 时间,python min 函数是 O(n) 时间,而 insert 是 0(n) 时间。由于这些在我的 for 循环中,我的总时间复杂度是 O(n^2) 还是 O(n)?
【问题讨论】:
-
....这里的输入是什么?
length是变量吗?是否依赖n? -
顺便说一句,不要使用
minimumList.insert(len(minimumList), minimumValue)使用minimumList.append(minimumValue) -
"并且插入时间为 0(n)。"不是,如果你在最后插入,即
.appending... 那是(摊销的)恒定时间 -
@juanpa.arrivillaga 你好,这是一个滑动窗口问题,length是窗口的segment长度,n是列表的总长度。所以 n - length + 1 会给你所有可能的滑动窗口。例如,diskSpace = [1,2,3] 然后 n = 3,我们可以让 length = 2。那么滑动窗口的数量将是 2,例如 [1,2] 和 [2,3]。我只是用 min 找到最小值并插入另一个数组。然后我找到那个最小列表的最大值。所以 max(1,2) 在我们的例子中是 2。我认为总复杂度是 O(n*length)?
标签: python list for-loop time complexity-theory