列表上特定切片操作的时间和空间复杂度?

问题描述

我有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]]

因此,所使用的空间取决于解释器的实现(它可能会使用额外的空间来临时复制)。

但是运算符算法的最佳复杂度(不包括列表本身的空间)是:

  1. 时间复杂度O(m)
  2. 空间复杂度O(1)