回覆列表
  • 1 # 心似煙火

    利益相關

    力扣(LeetCode)上的題目相當於什麼水準呢,這個問題當然是我最有發言權啦!

    據我們瞭解到的情況,Easy 題和 Medium 題在面試中比較常見,通常會以手寫程式碼之類的形式出現,您需要對問題進行分析並給出解答,並於面試官進行交流溝通,有時還會被要求分析時間複雜度與空間複雜度,面試官會透過您對題目的分析解答,瞭解您對常用演算法的熟悉程度和您的程式實現功底。

    而在一些對演算法和程式實現功底要求較高的崗位,Hard 題也是很受到面試官的青睞,如果您在面試中成功 Bug-Free 出一道 Hard 題,我們相信您一定會給面試官留下很深刻的印象,並極大增加拿到 Offer 的機率,據相關人士統計,如果您在面試成功解出一道 Hard 題,拿不到 Offer 的機率無限接近於 0。

    所以, 力扣中 Easy 和 Medium 相當於面試中的常規題,而 Hard 則相當於面試中較難的題,解出一道 Hard 題,Offer 可以說是囊中之物。

    題目分類

    力扣的題目覆蓋面極大,目前已有 1000+ 公開題目資源,涉及了許多演算法與資料結構,有貪心,搜尋,動態規劃,連結串列,二叉樹,雜湊表等。

    這些題目所涉及的知識點都有很大的實際應用價值,所以,力扣不僅對題目難度進行了劃分,而且我們還對題目的知識點做了分類,為每一道題都打上了標籤,您可以在所有題目中篩選出您感興趣的主題進行訓練,我們相信您在經過一段時間訓練後,一定會變得更強,並很有可能拿到心儀的 Offer。

    多種語言支援

    力扣目前支援 16+ 種程式語言:C++, Java, Python, Rust, Kotlin 等語言,不管您的擅長語言是哪一種,你都將在力扣獲得愉快的做題體驗,因為你能更好地注重於問題所用演算法與資料結構本身,而不是糾結於您不擅長語言的細節上。

    題目這麼多?應該如何刷?

    刷題前準備

    首先,刷題前你需要具備一些演算法和資料結構的基礎,這些基礎包括:

    1. 常考的資料結構:陣列、字串、連結串列、樹(如二叉樹)等

    2. 常考的演算法:分治、貪心、窮舉、動態規劃、回溯等

    時間充裕的同學可以按照下圖進行系統性地學習:

    同時可以搭配相關書籍進行學習:

    1.《演算法第 4 版》- Robert Sedgewick

    適合初學者入門

    2.《資料結構和演算法分析- C 語言描述》- Mark Allen Weiss

    需要有一定 C 語言基礎

    3.《程式設計珠璣》- Jon Bentley

    4.《演算法導論》- Cormen,T.H.

    有一定演算法基礎以後可以去學習《演算法導論》。

    先把這些基礎的演算法和資料結構知識梳理一遍,在理解的基礎上再去力扣上刷題,可以讓刷題事半功倍。

    開始刷題

    我相信很多剛開始刷力扣的小夥伴開啟網站後,面對這上千道難易度層次不齊的題目就懵了,完全不知從何下手。 我的建議是可以先從一些 簡單的題目 開始,在題庫頁面我們可以使用篩選工具將難度選擇為「簡單」。同時還可以新增多個種類的篩選條件,比如我想要刷陣列的題目,我們可以再選擇一個「陣列」的話題標籤,那麼我們就可以從所有的陣列簡單題開始練習了。這些操作在學習工具頁面底部的「題目列表」中你也是可以找到的。

    或者你可以從 題解多 的題目開始練習,這樣即使被某個問題卡住了,也能透過其他使用者的優質題解開啟解題思路。

    解題示例

    對待每一道題目都應該追求完美,看看同一道題自己能想出多少種解法,其他題目是否可以用同樣的解題思路。

    比如力扣上的第 3 題「無重複字元的最長子串

    題目描述:

    給定一個字串,請你找出其中不含有重複字元的 最長子串 的長度。

    示例 1:

    示例 2:

    示例 3:

    這道題目基本解題思路是 滑動視窗,我們是否還可以用其他的解法?

  • 中秋節和大豐收的關聯?
  • 美的和格力中央空調選哪個?