我遇過很多學習程式語言的人,都一直學框架或是 API 怎麼用,都不是很注重底層的知識,我認為一棟樓要蓋多高取決於地基打得多深,因為框架與 API 會變,但時間複雜度、記憶體模型、資料結構設計是不會變的。
資料結構與演算法是程式設計的基礎,它們除了能幫助你寫出更有效率的程式,也是很多公司技術面試中必考的內容。其實我個人認為這也是本科與分本科的分水嶺,熟練的掌握這部分,能夠讓你跟那些轉職的工程師拉開距離,脫穎而出。
本系列將會依照以下方向進行介紹:
本系列的重心會放在演算法的部分,如果有剩餘的篇幅會補充排序或是搜尋的演算法;我會盡量會在每個知識點找個 1 ~ 2 題的 Leetcode 來實作。
本系列會以 Python 為範例,但是其實你也不一定需要會 Python,理論上只要有理解,就應該要能夠使用你自己熟悉的語言寫出來,所以本系列只預設讀者至少具備一門程式語言 (Python, Java, C++, JavaScript ...) 的基礎即可。
本系列每天會講一個知識點,未必是一天一個資料結構或演算法,吸取了我另一篇30 天入門常見的機器學習演算法已經完賽的經驗,這樣每篇的篇幅可能會落差很大,而且我的壓力會太大。基本上每篇一定會有理論,但是有沒有實作不敢保證,因為我認為學程式,不急著埋頭苦幹的寫,而是完全理解在動手。
今天是第一天,請先準備好你熟悉的程式語言的開發環境,也可以順便註冊好 Leetcode,本系列文章會同步發表到我的部落格 - 志謙's Blog,如果有想詢問或交流,可以透過 Email、我的部落格或是對應的文章留言都可以,我看到就會回覆。