问题描述
我有2个列表,例如nums1和n + m个元素,nums2和m个元素。
如果我表演nums1[n-m:] = nums2
会使用额外的空间吗?这种操作的时间复杂度是多少?
解决方法
您谈论的操作是将m个元素从num2
复制到num1
。
它不是深拷贝,因为:
a= [[1,1],[2,2],[3,3],[4,4]]
b=[[7,7],[8,8]]
a[2:] = b
b[0][0] = 111
使a
等于[[1,[111,8]]
。
因此,所使用的空间取决于解释器的实现(它可能会使用额外的空间来临时复制)。
但是运算符算法的最佳复杂度(不包括列表本身的空间)是:
- 时间复杂度O(m)
- 空间复杂度O(1)