考虑下面的代码:
x = 'some string'
x = x[::-1]
反转字符串是o(n)。当我们执行x[::-1]时,我假设python只是从最后一个到第一个选择字符串的索引。他做了n次(n=字符串的长度)。因此,说“x=x[::-1]”是正确的吗
时间复杂度的o(n)
o(n)是空间复杂度(必须为新反转的字符串重新分配内存)
如果没有赋值('x[::-1]”),时间复杂度就是o(n),空间复杂度就是o(1)?
考虑下面的代码:
x = 'some string'
x = x[::-1]
反转字符串是o(n)。当我们执行x[::-1]时,我假设python只是从最后一个到第一个选择字符串的索引。他做了n次(n=字符串的长度)。因此,说“x=x[::-1]”是正确的吗
时间复杂度的o(n)
o(n)是空间复杂度(必须为新反转的字符串重新分配内存)
如果没有赋值('x[::-1]”),时间复杂度就是o(n),空间复杂度就是o(1)?
1条答案
按热度按时间3htmauhk1#
它的时间和空间复杂度都是o(n)。很少有python优化代码的情况。它将优化
if False:
例如,编码。但是像这样的事情就不会了。考虑这两个功能:
现在查看这两个功能的“反汇编程序”输出:
如你所见,它们都包括
BUILD_SLICE
及BINARY_SUBSCR
. 唯一的区别是foo1
然后呢RETURN_VALUE
虽然foo2
做POP_TOP
若要放弃该值,则LOAD_CONST
装载None
做之前RETURN_VALUE
.