遞歸
- 定義一個函數(shù),在函數(shù)內(nèi)調(diào)用函數(shù)本身
- 定義好返回條件
- 想好要傳的參數(shù)
迭代
- 通過循環(huán)語句重復(fù)執(zhí)行,直到達(dá)到邊界條件 跳出循環(huán)
DFS 深度優(yōu)先、
- 沿著一條路走到頭,走到頭后遍歷兄弟節(jié)點,遍歷完后往回走一步,然后再遍歷兄弟節(jié)點,再往回走一部,直到遍歷完所有節(jié)點
- 一般配合遞歸來實現(xiàn)
- 典型的題目(HJ93 數(shù)組分組): https://www.nowcoder.com/practice/9af744a3517440508dbeb297020aca86?tpId=37&tqId=21316&rp=1&ru=/ta/huawei&qru=/ta/huawei&difficulty=&judgeStatus=&tags=/question-ranking
- 湊數(shù)求和:https://www.nowcoder.com/practice/11cc498832db489786f8a03c3b67d02c
- 題解:https://blog.nowcoder.net/n/a6b71a5651874650a65945e9bae8e5bf
BFS 廣度優(yōu)先
- 兩層循環(huán):第一層用while循環(huán)每次循環(huán)深度+1,第二層循環(huán)用于遍歷當(dāng)前深度的所有節(jié)點
- 典型的題目:
- https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/submissions/
- https://leetcode-cn.com/problems/open-the-lock/
動態(tài)規(guī)劃
- 首先我們直到最初的小問題的答案,我稱為邊界答案,然后通過邊界答案可以得出下一步的答案,循環(huán)得出下一步的答案,直到最終問題得到解決
- 關(guān)鍵是要找到邊界答案和找出轉(zhuǎn)換公式
- 典型題目:https://www.nowcoder.com/practice/e2a22f0305eb4f2f9846e7d644dba09b?tpId=37&tqId=21314&rp=1&ru=/ta/huawei&qru=/ta/huawei&difficulty=&judgeStatus=&tags=/question-ranking
棧
- 先進(jìn)后出
- 可以通過遞歸的方式獲取到所有可能的出棧順序
- 第一步:壓入第一個棧
- 判斷是否還可以入棧,可以的話遞歸入棧
- 判斷是否還可以出棧,可以的話 遞歸出棧
- 典型題目:https://www.nowcoder.com/practice/97ba57c35e9f4749826dc3befaeae109?tpId=37&tqId=21300&rp=1&ru=/ta/huawei&qru=/ta/huawei&difficulty=&judgeStatus=&tags=/question-ranking