【发布时间】:2022-01-04 01:16:32
【问题描述】:
假设您循环 n 次,并且每次迭代都创建一个空间字符串 n ,其范围仅在该迭代内(因此在下一次迭代中不再可访问)。我会说我使用 O(n^2) 空间,因为对于 n 次迭代,我使用 n 空间。
但是,从逻辑上讲,如果每个循环都销毁前一次迭代的字符串(n 个空间)并用本次迭代的字符串(n 个空间)覆盖它,那么在整个循环中,您只会使用 O(n) 空间。我很困惑是确认 O(n) 还是 O(n^2) 空间?
举个例子:
s = "hello"
for _ in range(len(s)):
newString = s[:]
return newString
【问题讨论】:
-
请注意,Stack Overflow 是针对关于软件开发的实践的问题。对于理论,Computer Science 存在。
-
...如果这是一个实用问题,您会知道是什么实际问题导致您需要分析,因此您会知道考虑垃圾收集是否合适基于这个实际背景。 (计算你的算法可以运行的最小内存量?计算如果垃圾收集被推迟,你的算法可以分配的最大内存量?这些都是有价值的东西;在给定时间哪个是有价值的,由任何原因决定您完全有理由进行分析)。
-
我投票结束这个问题,因为它属于cs.stackexchange.com
-
标题和正文中的问题不匹配,所以我回答了正文中的问题,因为它比较简单,但是标题中的问题本身对于SO来说太宽泛了,所以我建议你改变它。供参考:"If you can imagine an entire book that answers your question, you’re asking too much."
标签: python algorithm data-structures space-complexity