我对空间复杂性感到有点困惑。这是O(1)空间复杂度还是O(N)复杂度? 由于我正在创建一个大小为n的字符串,我的猜测是空间复杂度是O(N)是正确的吗?
## this function takes in a string and returns the string
def test(stringval):
stringval2 = ""
for x in stringval:
stringval2 = stringval2 + x
return stringval2
test("hello")}
答案 0 :(得分:0)
是的,这是正确的。存储长度为n的新字符串的空间复杂度是Θ(n),因为每个字符必须存储在某处。原则上,您可以通过注意stringval2
最终成为stringval1
的副本并可能使用写时复制或其他优化来减少空间使用量,但在这种情况下,没有理由怀疑这一点是这样的。
希望这有帮助!