前端如何從零基礎準備數據結構與算法

前言:做爲一個非科班出身,自學前端過程當中知道學習數據結構與算法的重要性,可是網上推薦的《算法導論》看到厚度和翻了兩章就沒有動力翻下去了,因而打算從基礎性的書本看起,結合本身看的書的總結和網上的參考文章,從最基礎的數據結構用JavaScript實現作起,擴展到對應的算法題,一步步從零基礎開始準備數據結構與算法。前端


學習計劃分爲三個步驟:git

  1. 《學習JavaScript數據結構與算法》代碼實現,這本書挺推薦的,剛剛出了第三版,擴充了內容和部分ES6實現,也會把其餘書中講解比較好的添加到這部分。
  2. 《劍指Offer》JavaScript實現,這部分網上有人整理挺好的了,本身添加這部分是由於考慮這本書內容挺好,適合進階學習。
  3. 刷leetcode,打算分類和從簡單到困難刷題。


下面是是學習計劃的第一步,《學習JavaScript數據結構與算法》實現目錄:github

具體代碼實現Github地址:github.com/yangyang190…算法

1.Stack(棧)

  • Stack實現數組

  • Stack-進制轉換問題數據結構

  • Stack-平衡圓括號問題學習

2.Array(數組)
  • 查找數組中某個數的位置code

  • 使用歸併排序合併兩個有序數組排序

  • 電話號碼的組合問題(公式運算,主要涉及排列組合)遞歸

3.Queue(隊列)
  • Queue實現

  • Queue-deque實現(雙端隊列)

  • Queue-擊鼓傳花遊戲問題(循環隊列)

  • Queue-迴文檢查器問題(雙端隊列)

4.LinkedList(鏈表)
  • 單向鏈表和雙向鏈表實現

  • 循環鏈表實現

  • 鏈表排序問題

  • 環形鏈表問題

5.Set(集合)
  • Set實現

  • 集合運算(並、交、差、子集,ES5和ES6以及擴展運算符實現)

  • 惟一的摩爾斯密碼詞問題

  • 兩個數組的交集Ⅰ問題

6.Map(字典/映射)
  • Map實現

  • 兩個數組的交集Ⅱ問題

7.HashTable(散列表/哈希表)
  • HasbTable實現

  • 散列表處理衝突

  • 字符串中的第一個惟一字符問題

8.遞歸
  • 計算一個數的階乘

  • 斐波那契數列

  • 復原IP地址問題

9.Tree(樹)
  • 二叉樹和二叉搜索樹

  • 樹的遍歷(中序遍歷、先序遍歷和後序遍歷)

  • 搜索樹中的值

  • 自平衡樹(AVL樹和紅黑樹)


後記:針對前端零基礎學習數據結構與算法,建議是翻看《學習JavaScript數據結構與算法》,一步步實現其中的代碼,同時能夠翻看《個人第一本算法書》和配套APP、《圖解算法》、《數據結構與算法圖解》,這三本書主要講解理論和思路,能夠比較快速翻看,看完《學習JavaScript數據結構與算法》,就能夠看《劍指Offer》,是一個進階訓練,網上有JavaScript版本代碼,我會整理到Github項目中,而後再去leetcode,有這樣的學習計劃,主要是想對從零基礎學習數據結構與算法的同窗有個過渡學習的過程,我也會按照這個步驟在Github中更新代碼,最後感謝網上無私貢獻思路和代碼的人。

相關文章
相關標籤/搜索