试图找出投射到字符串
的时间复杂度str([1,2,6,...,3,6])
很确定它是O(1) 不知道如何验证。
编辑: 关于空间复杂性,这不应该与列表大小成线性关系, 考虑O(1)因为字符串有最大尺寸。
答案 0 :(得分:9)
假设
列表的 str
转换在复杂性上是不变的。
<强>实验强>
创建不同大小的列表:
In [67]: list10 = np.random.choice(100, 10).tolist()
In [68]: list100 = np.random.choice(100, 100).tolist()
In [69]: list10000 = np.random.choice(100, 10000).tolist()
In [70]: list1000000 = np.random.choice(100, 1000000).tolist()
<强>观察强>
使用timeit
并在每个列表上计算转化过程的时间:
In [71]: %timeit str(list10)
1000000 loops, best of 3: 1.69 µs per loop
In [72]: %timeit str(list100)
100000 loops, best of 3: 10.6 µs per loop
In [73]: %timeit str(list10000)
1000 loops, best of 3: 958 µs per loop
In [74]: %timeit str(list1000000)
10 loops, best of 3: 96.8 ms per loop
<强>结论强>
假设不正确。转换是及时的线性。