謝謝邀請,在開始Leetcoding之前,你需要學習/整理重要主題列表。如果不這樣做,最終將浪費時間。請記住以下兩個規(guī)則:
- 不要在準備工作上花費太多時間。
- 不要在準備工作上花費太多時間。
如果您花太多時間學習,您將永遠無法解決Leetcode/CTCI問題。相反,如果您在準備工作上花費的時間太少,就會迷失方向。重要的是您要花費適當?shù)臅r間進行準備工作,以確保您不會浪費時間。
在執(zhí)行任何操作之前,請確保閱讀/學習以下主題。學習任何其他內(nèi)容可能會浪費您的時間。有些人學習的方式超出了他們需要的方式(花式圖算法,生成樹,A*等),因為他們認為這將使他們成為更好的工程師。我認為那完全是浪費時間。大多數(shù)采訪者自己都不記得這些話題。一旦找到理想的工作,就可以自己學習。不要浪費時間。只需關(guān)注下面的數(shù)據(jù)結(jié)構(gòu)和算法,僅此而已。
數(shù)據(jù)結(jié)構(gòu)
- 動態(tài)陣列
- 鏈表
- 堆疊與排隊
- 哈希表
- 二進制搜索樹
- 二進制堆和優(yōu)先級隊列
- 圖表
算法
- 位操作和數(shù)字-差異無符號與有符號
- 排序穩(wěn)定性
- 合并排序
- 快速排序
- 堆排序-就地排序以獲取O(1)空間
- 二元搜尋
- 排列
- 子集
- BFS圖
- DFS圖
- Dijkstra算法
- 拓撲排序
準備工作
一旦您對上面的數(shù)據(jù)結(jié)構(gòu)和算法感到滿意,請多次進行以下練習(至少2–3次),直到您可以閉上眼睛進行練習。
- 從頭開始實現(xiàn)ArrayList
- 反向鏈接列表
- 使用數(shù)組實現(xiàn)堆棧和隊列
- 用簡單的哈希函數(shù)實現(xiàn)哈希表
- 使用鄰接表實現(xiàn)圖,然后為BFS和DFS編寫函數(shù)。
- 遞歸和迭代地編寫二進制搜索算法
- 編寫合并排序算法
- 編寫快速排序算法
- 使用DFS(按順序,前順序和后順序-它們?nèi)咳齻€)和BFS二叉樹。
記住常見算法的時間和空間復雜性和了解這些重要的位操作技巧。這些可能是你入門生涯中最困難的時刻。一方面,我希望你認真對待所有這一切。另一方面,我希望你意識到自己會記住并珍惜這些時刻。在獲得夢想的工作之后,您實際上會錯過這些艱苦的工作和努力解決算法難題的寶貴時刻。
上一篇萌塵框架怎么用