Leetcode 專題訓練集合(關聯Github)


解題程序都放在Github中:(持續更新)
Github地址 :https://github.com/Worthy-Wang/LeetCode


刷題之前,用三分鐘看看下面的東西,相信我,會有幫助的

在進行Leetcode的訓練之前,應該掌握:

  • 一種主流語言(如C++/Java等)
    如果你不熟悉語言,可能你無法理解像sort, merge, bind,這些STL庫函數在算法中的妙用 , 也無法理解vector 或是 queue這些容器庫的方便之處。
  • 熟悉數據結構與算法
    如果你不熟悉數據結構,那麼像二叉樹BSTAVL樹這些看似簡單的結構都會讓你頭疼很久;更不用說在圖論中出現的DFS, BFS, 貪心算法動態規劃等。

未掌握好以上兩點就刷Leetocde, 那麼你可能每一題都需要兩三個小時才能完成。

做題套路

  • 分專題(Github中的專題分類)

這樣你才能更好的掌握某一類專題的套路,題是做不完的,但是專題可以做完!

做題方法:

  • 一刷十分鐘做不出來直接看答案,有些題的思路第一次真的想不到
  • 二刷開始就需要自己做出來,因爲第一次你已經有印象了
  • 再接下來的訓練中,保證能快速做出來,畢竟面試時間就一點
  • 每週參加Leetocde周賽,保持手感

Github中的做題格式:(以118題爲例)

  • 標明做題的開始時間通過時間

這樣會讓你知道每做一道題花了多少時間

  • 標明時間複雜度空間複雜度

習慣之後你才能明白哪些算法效率高

題目:118. Pascal's Triangle
鏈接:https://leetcode-cn.com/problems/pascals-triangle/

begin: 9:42
end:  9:56
Time complexity: O(N^2) 
Space complexity: O(1)
class Solution
{
public:
    vector<vector<int>> generate(int numRows)
    {
        vector<vector<int>> ans;
        for (int i = 0; i < numRows; i++)
        {
            vector<int> temp(i+1, 1);
            ans.push_back(temp);
            for (int j = 0; j <= i; j++)
                if (i > 0 && j > 0 && j < i)
                    ans[i][j] = ans[i - 1][j - 1] + ans[i - 1][j];
        }
        return ans;
    }
};

下面是Github中的專題分類方式:

  • 專題一:數組(Chapter1_Array)
  • 專題二:鏈表(Chapter2_list)
  • 專題三:字符串(Chapter3_String)
  • 專題四:棧(Chapter4_Stack)
  • 專題五:樹(Chapter5_Tree)
  • 專題六:排序(Chapter6_Sort)
  • 專題七:查找(Chapter7_Search)
  • 專題八:暴力解法(Chapter8_Violence)
  • 專題九:BFS(Chapter9_BFS)
  • 專題十:DFS(Chapter10_DFS)
  • 專題十一:分治(Chapter11_Paritition)
  • 專題十二:貪心(Chapter12_Greedy)
  • 專題十三:動態規劃(Chapter13_DP)
  • 專題十四:圖(Chapter14_Graph)
  • 專題十五:不定類型(Chapter15_Unspecific)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章