了解的知識:
1.空間複雜度:空間複雜度(space complexity)是對乙個演算法在執行過程中臨時占用儲存空間大小的量度。
這樣子理解起來有點困難,
我們又了解到當乙個演算法的空間複雜度為乙個常量,即不隨被處理資料量n的大小而改變時,可表示為o(1)
舉兩個例子:a.陣列的隨機訪問就是o(1)
b.鍊錶的隨機訪問就是o(n)
所以對於陣列在執行過程中占用的儲存空間只有乙個常量,而鍊錶占有的會隨處理資料量的大小n而改變所以為o(n)。
2.時間複雜度: 時間複雜度是度量演算法執行的時間長短
繼續舉例子就可以理解了:
要從0加到n,我們會這麼寫:
int sum = 0;
for(int i = 0; i<=n; ++i)
一共算了n次加法,那麼就說這個時間複雜度是o(n)。當然o(n)的精確的概念是,是n的最高次方,比如,某個計算共計算了3n + 2次,那麼這個時間複雜度也是o(n),因為3n + 2中的最高次方是n。
如果**這麼寫:
int sum = 0;
for(int i = 0; i<=n; ++i)
}很顯然一共算了n^2次加法,那麼就說這個時間複雜度是o(n^2)
void afunc(int n)
}
假設迴圈次數為 t,則迴圈條件滿足 2^t < n。可以得出,執行次數t = log(2)(n),即 t(n) = log(2)(n),可見時間複雜度為 o(log(2)(n)),即 o(log n)。
Leetcode初級演算法
不是很難的一道動態規劃的題,感覺做多了就記住了。class solution return dp n 此題想法就是,只要後面買的減去前面買的能大於0,就算在內,每次買完和max比較,大於max就記錄為max,如果買的sum小於0了,重新開始買,sum記為0 class solution if sum...
LeetCode初級演算法C
class solution temp len s i else if s i 0 s i 9 int i 0,j len 1 while i j else break if i j return true else return false 暴力求解,開闢了100010的陣列。class solu...
Leetcode 初級演算法 動態規劃
二級標題格式 章節內題號 題庫內題號 題目標題 這一章節學的不是很好 我的思路 先想了乙個遞迴的解法 發現跑的非常慢 才意識到需要乙個動態規劃的解法 遞迴 12s 巨慢 public intclimbstairs int n 動態規劃 全陣列 public intclimbstairs int n ...