庖丁解牛 把數據結構的一個又一個知識點分解開來面試
It is important to view knowledge as sort of a semantic tree —— ElonMusk算法
覃超建議 把數據結構這麼分:數組
if-else, switch -> Branch數據結構
for, while loop -> Iterationide
遞歸 Recursion(Divide & Conquer, Backtrace)oop
這裏作個分割 下面的就是一些高級一點的算法學習
搜索 Search:深度優先搜索 Depth first search,廣度優先搜索Breadth first search,A*, etc測試
動態規劃 Dynamic Programming優化
二分查找 Binary Searchspa
貪心 Greedy
數學 Math,幾何 Geometry
注意:在頭腦中回憶上面每種算法的思想和代碼模版
(動手繪製腦圖去)
LeetCode上面有不少別人寫的很是好的代碼
刷題的方式(切題四件套)
Clarification(多看幾遍題目 && 和麪試官多溝通,確保本身對題目的理解是對的)
把題目看清楚 題目要幹嗎 很重要
Possible Solutions
全部可能的想法。不要只用想到的第一種解法去解。要去用全部可能想到的方法,從中找出最優解法
- compate (time / space)
- optimal (增強)
Coding(多寫)
Test cases(測試用例要多寫幾個,給面試官大人感受,本身要善始善終)
五毒神掌
刷題第一遍
- 五分鐘:讀題 + 思考 (若是基礎薄弱 能夠給本身10分鐘 最多15分鐘)這裏不能略過
- 有思路 直接作 直接寫 || 超時 ——>> 直接看解法!注意!多解法,比較解法優劣(理解學習和運用算法 不是讓你去造輪子)
- 背誦、默寫這樣好的寫法(並非死記硬背便可,先背誦記住了以後,通常來講確定就能理解了。不少題目之後看到就條件反射了)(不能打擊本身的積極性)
刷題第二遍
- 立刻本身寫(一開始可能會有bug 不要緊 debug debug debug 修改修改修改) ——>LeetCode提交
- 多種寫法、體會 ——>優化!(最重要的是執行時間)
刷題第三遍
- 過了24 小時的時間之後,再次重複作題
- 不一樣解法的熟練程度 ——> 專項練習
刷題第四遍
- 過了一週以後: 反覆回來練習相同的題目
刷題第五遍
面試前一週恢復性的訓練