演算法筆記 40

2021-10-01 17:33:28 字數 1829 閱讀 4053

1 斐波拉契數列,遞迴,複雜度2的n次方e

二分查詢:o(logn)

二叉樹的遍歷:o(n) 每個節點遍歷僅遍歷一次

排序的二維矩陣的查詢:o(n)

快排:o(nlogn)

2 優先佇列

正常入,按優先順序出。實現機制:1) 堆(二叉堆,多項式堆,斐波拉契堆),二叉搜尋樹。

小頂堆:最小的在最上面

3 hashmap:平均時間複雜度: 查詢,刪除,插入複雜度o(1)。最差的時間複雜度:o(n).

二叉搜尋樹:o(logn),元素有序,如果要求元素是有序排列的,可以用這個。

4 二叉搜尋樹

左子樹上所有結點的值均小於它的根結點的值,右子樹上都大於根結點的值,左右子樹分別為二叉查詢樹。

5 二叉樹的遍歷

看根的位置:

前序:根左右;中序:左根右,後序:左右根

6 廣度優先搜尋

在樹/圖/ 狀態集中尋找特定的節點

7 剪枝

有些節點一看就不用去看的。

8 二分查詢

要求: 所查詢的數是要在乙個有序的陣列裡,存在上下界線,可以通過索引來訪問。鍊錶不適合,陣列適合。

9 trie 樹

字典樹:又稱單詞查詢樹或鍵樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計和排序大量的字串,

所以經常被搜尋引擎系統用於文字詞頻統計。優點是最大限度減少無謂的字串比較,查詢效率比雜湊表高。

每條邊代表乙個字母

10 位運算

x 和0異或,得到x,x和x 異或得到0

實戰常用的位運算

x &1==1 或者0 是判斷奇偶(x%2==1)

x&(x-1) 清零最低位的1 # 求出有多少個二進位制的1或0

x&-x得到最低位的1

11 dp

=遞迴+記憶化:

狀態定義:opt[n] ,dp[n],fib[n]

狀態轉移方程:opt[n]=best_of(opt[n-1,opt[n-2],...)

最優子結構

普通的遞迴:fib[n]=fib[n-1]+fib[n-2),時間複雜度2的n 次方

bp:把每次的fib[n] 記住,後面使用,時間複雜度o(n),從小到大:

dp vs 回溯 vs 貪心

回溯:重複計算

貪心:永遠區域性最優

dp-記錄區域性最優子結構,多種記錄值。

12 並查集

樹型結構,用於處理一些不交集的合併及查詢問題

find:確定元素屬於哪乙個子集,可以被用來確定兩個元素是否屬於同乙個子集

union :將兩個子集合並為同乙個集合

初始化:它的值等於它自己

13 lru cache

最近最少使用,雙向鍊錶,查詢,修改和更新都是o(1)

14 bloom 過濾器

乙個很長的二進位制向量和乙個對映函式:布隆過濾器可以用於檢索乙個元素是否在乙個集合中。優點是空間效率和查詢時間都遠遠超過一般的演算法,缺點是有一定的誤識別率和刪

演算法40講

找女朋友問題 如果能夠後悔 o n 如果不能後悔 priority queue 乙個任務的密度 重要程度 完成時間 始終完成最緊迫的工作 kelly formula 凱利公式 game theory 博弈論 五個 的模板 手寫 1 遞迴的終止條件 遞迴 defrecurison level,para...

學習筆記40

今天完成了第十五章部分所有內容的學習。1 修改程式以使用函式 建立乙個目錄來儲存漫畫,並定義downloadxkcd 來迴圈遍歷指定範圍中的所有編號 2 建立並啟動執行緒 建立多個執行緒並且使每個執行緒都呼叫downloadxkcd 3 等待所有程式結束 呼叫thread物件join 方法來阻塞。利...

每日演算法 day 40

那些你早出晚歸付出的刻苦努力,你不想訓練,當你覺的太累了但還是要咬牙堅持的時候,那就是在追逐夢想,不要在意終點有什麼,要享受路途的過程,或許你不能成就夢想,但一定會有更偉大的事情隨之而來。mamba out 2020.3.25 最後乙個資料點卡著時間ac了差了幾十毫秒 本來想吸一口氧氣的結果不吸氧氣...