非計算機專業,想刷leetcode,請問在此之前需要做什麼準備?

馬欣玉


  1. 不要在準備工作上花費太多時間。
  2. 不要在準備工作上花費太多時間。

如果您花太多時間學習,您將永遠無法解決Leetcode / CTCI問題。相反,如果您在準備工作上花費的時間太少,就會迷失方向。重要的是您要花費適當的時間進行準備工作,以確保您不會浪費時間。

在執行任何操作之前,請確保閱讀/學習以下主題。學習任何其他內容可能會浪費您的時間。有些人學習的方式超出了他們需要的方式(花式圖算法,生成樹,A *等),因為他們認為這將使他們成為更好的工程師。我認為那完全是浪費時間。大多數採訪者自己都不記得這些話題。一旦找到理想的工作,就可以自己學習。不要浪費時間。只需關注下面的數據結構和算法,僅此而已。

數據結構

  • 動態陣列
  • 鏈表
  • 堆疊與排隊
  • 哈希表
  • 二進制搜索樹
  • 二進制堆和優先級隊列
  • 圖表

算法

  • 位操作和數字-差異無符號與有符號
  • 排序穩定性
  • 合併排序
  • 快速排序
  • 堆排序-就地排序以獲取O(1)空間
  • 二元搜尋
  • 排列
  • 子集
  • BFS圖
  • DFS圖
  • Dijkstra算法
  • 拓撲排序

準備工作

一旦您對上面的數據結構和算法感到滿意,請多次進行以下練習(至少2–3次),直到您可以閉上眼睛進行練習。

  • 從頭開始實現ArrayList
  • 反向鏈接列表
  • 使用數組實現堆棧和隊列
  • 用簡單的哈希函數實現哈希表
  • 使用鄰接表實現圖,然後為BFS和DFS編寫函數。
  • 遞歸和迭代地編寫二進制搜索算法
  • 編寫合併排序算法
  • 編寫快速排序算法
  • 使用DFS(按順序,前順序和後順序-它們全部三個)和BFS二叉樹。

記住常見算法的時間和空間複雜性和了解這些重要的位操作技巧。這些可能是你入門生涯中最困難的時刻。一方面,我希望你認真對待所有這一切。另一方面,我希望你意識到自己會記住並珍惜這些時刻。在獲得夢想的工作之後,您實際上會錯過這些艱苦的工作和努力解決算法難題的寶貴時刻。


大魔王Hacker


leetcode上的題目大部分是算法題,數據結構題,而在做算法題的前提是要對編程語言熟悉,這樣可以在思路清晰的情況下,短時間內運用編程語言已經封裝好的庫,類,等給出最佳的解決辦法。所以要刷leetcode的題首先要對編程語言熟悉,對數據結構熟悉,還有就是增強算法能力,怎麼增強算法能力呢?到網上多查找資料,比如有的leetcode題要利用動態規劃,貪吃算法,蔡勒公式,矩陣等。個人感覺門坎還是有點高的。當然,這些都是可以經過自己的努力提高和改變的,毅力很重要。


小羊看科技


直接上,邊做邊學。可以按照由易到難的題目循序漸進,也可以按照數據結構或算法分類去練習。總之要做到,瞭解算法的精髓,同一類題目舉一反三,觸類旁通。


RampRamp


基本的數據結構,基本的算法,去學下吧!再去學個你感興趣的語言!如果單純玩算法的話,去玩下python吧!簡單!


trick12


熟悉數據結構與算法


分享到:


相關文章: