马东什么:计算复杂度理论——时间复杂度zhuanlan.zhihu.com
之前介绍了时间复杂度,终于腾出时间刷空间复杂度了;
和时间复杂度一样,常见的空间复杂度的度量也包括了:
https://www.bigocheatsheet.com/www.bigocheatsheet.com找到了一个很好的总结
整体概念和时间复杂度类似,一般来说,在leetcode的题目中,都是通过额外空间的使用的大小来进行衡量的;
空间复杂度O(1)
j=0
for i in range(n):
j+=1
无论n的大小如何变化都没有开辟新的内存空间来存放;
空间复杂度o(n)
j=[]
for i in range(n):
j.append(i)
可以看到,内存空间随着n的增大而线性增长
(注意,这里仅仅是为了说明而用python写的例子,实际上python的list的内存空间增长是指数的。。。。具体可见python list的内存占用变化的相关文章分析这里暂时不写那么多了)
空间复杂度o(n^2)
j=[]
for i in range(n):
for k in range(n):
j.append(k)
空间复杂度O(n^k) 类似的道理了。。
空间复杂度 O(logn)
快速排序---(面试碰到过好几次)_nrsc-CSDN博客_快速排序blog.csdn.net快排涉及到需要定义中间变量,这个中间变量的空间复杂度为O(logn)