馬東什麼:計算複雜度理論——時間複雜度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)