馬欣玉
- 不要在準備工作上花費太多時間。
- 不要在準備工作上花費太多時間。
如果您花太多時間學習,您將永遠無法解決Leetcode / CTCI問題。相反,如果您在準備工作上花費的時間太少,就會迷失方向。重要的是您要花費適當的時間進行準備工作,以確保您不會浪費時間。
在執行任何操作之前,請確保閱讀/學習以下主題。學習任何其他內容可能會浪費您的時間。有些人學習的方式超出了他們需要的方式(花式圖算法,生成樹,A *等),因為他們認為這將使他們成為更好的工程師。我認為那完全是浪費時間。大多數採訪者自己都不記得這些話題。一旦找到理想的工作,就可以自己學習。不要浪費時間。只需關注下面的數據結構和算法,僅此而已。
數據結構
- 動態陣列
- 鏈表
- 堆疊與排隊
- 哈希表
- 二進制搜索樹
- 二進制堆和優先級隊列
- 圖表
算法
- 位操作和數字-差異無符號與有符號
- 排序穩定性
- 合併排序
- 快速排序
- 堆排序-就地排序以獲取O(1)空間
- 二元搜尋
- 排列
- 子集
- BFS圖
- DFS圖
- Dijkstra算法
- 拓撲排序
準備工作
一旦您對上面的數據結構和算法感到滿意,請多次進行以下練習(至少2–3次),直到您可以閉上眼睛進行練習。
- 從頭開始實現ArrayList
- 反向鏈接列表
- 使用數組實現堆棧和隊列
- 用簡單的哈希函數實現哈希表
- 使用鄰接表實現圖,然後為BFS和DFS編寫函數。
- 遞歸和迭代地編寫二進制搜索算法
- 編寫合併排序算法
- 編寫快速排序算法
- 使用DFS(按順序,前順序和後順序-它們全部三個)和BFS二叉樹。
記住常見算法的時間和空間複雜性和了解這些重要的位操作技巧。這些可能是你入門生涯中最困難的時刻。一方面,我希望你認真對待所有這一切。另一方面,我希望你意識到自己會記住並珍惜這些時刻。在獲得夢想的工作之後,您實際上會錯過這些艱苦的工作和努力解決算法難題的寶貴時刻。
大魔王Hacker
leetcode上的題目大部分是算法題,數據結構題,而在做算法題的前提是要對編程語言熟悉,這樣可以在思路清晰的情況下,短時間內運用編程語言已經封裝好的庫,類,等給出最佳的解決辦法。所以要刷leetcode的題首先要對編程語言熟悉,對數據結構熟悉,還有就是增強算法能力,怎麼增強算法能力呢?到網上多查找資料,比如有的leetcode題要利用動態規劃,貪吃算法,蔡勒公式,矩陣等。個人感覺門坎還是有點高的。當然,這些都是可以經過自己的努力提高和改變的,毅力很重要。
小羊看科技
直接上,邊做邊學。可以按照由易到難的題目循序漸進,也可以按照數據結構或算法分類去練習。總之要做到,瞭解算法的精髓,同一類題目舉一反三,觸類旁通。
RampRamp
基本的數據結構,基本的算法,去學下吧!再去學個你感興趣的語言!如果單純玩算法的話,去玩下python吧!簡單!
trick12
熟悉數據結構與算法