九章算法:獨孤九劍


這逼課上了也沒啥用,都是很粗線條的框架,說了跟沒說似的。哦不,獨孤九劍有用。

(大部分來自天純的pdf筆記)
不咋考:如果問連通性,靜態就是 DFS,BFS,動態就 UF
不咋考:如果問依賴性就 topo sort
不咋考:DAG有向沒環路圖 的問題就 dfs+memo 
確實要小心但其實也不咋考:矩陣和 Array 通常都是 DP
確實要小心但其實也不咋考:問數量的通常都是 DP
確實要小心但其實也不咋考:問是否可以,也很有可能 DP

加了:求所有解的,基本 backtracking
排序總是可以想一想的
萬事總可以想HashMap
找規律試試Stack

 

碰到二叉樹的問題,就想想整棵樹在該問題上的結果 和左右兒子在該問題上的結果之間的聯系是什么

 

獨孤九劍 —— 破劍式:比O(n)更優的時間復雜度 幾乎只能是O(logn)的二分法

 

獨孤九劍——破槍式
能夠用 BFS 解決的問題,一定不要用 DFS 去做! 因為用 Recursion 實現的 DFS 可能造成 StackOverflow!
(NonRecursion 的 DFS 一來你不會寫,二來面試官也看不懂) 

總結:先想最短路的BFS,再想所有路的DFS(backtracing)

 

獨孤九劍 —— 破鞭式 碰到讓你找所有方案的題,一定是DFS。 90%DFS的題,要么是排列,要么是組合

 

獨孤九劍 —— 破索式 鏈表結構發生變化時,就需要 Dummy Node

 

獨孤九劍 —— 破掌式 對於求 2 個變量如何組合的問題,可以循環其中一個變量,然后研究另外一個變量如何變化

 

獨孤九劍 —— 破箭式 BFS 的主要數據結構是 Queue
DFS 的主要數據結構是 Stack 千萬不要搞反了!很體現基礎知識的扎實度!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM