【发布时间】:2017-11-12 16:53:02
【问题描述】:
按以下方式反转部分数组是否会创建从 i 到 j 的数组副本?
a[i:j] = a[i:j][::-1] # is this in place? Does this operation require O(j-i) space
下面的代码不会占用额外的空间吗?
a[i:j] = reversed(a[i,j])
除了下面的代码之外,还有其他方法可以用 O(1) 空间反转列表的一部分吗?
for k in range(i, i + (j-i + 1)//2):
arr[k], arr[j-k] = arr[j-k], arr[k]
【问题讨论】:
-
你可以在没有临时位置的情况下在 Python 中交换东西,例如
arr[k], arr[j-k] = arr[j-k], arr[k]。