利益相關
力扣(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:
這道題目基本解題思路是 滑動視窗,我們是否還可以用其他的解法?
利益相關
力扣(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:
這道題目基本解題思路是 滑動視窗,我們是否還可以用其他的解法?