從今天開始挑戰 LeetCode

落英墜露發表於2018-06-22

演算法和資料結構是計算機程式設計重要的理論,也是一名優秀程式設計師的基本功,所以非常有必要對其學習和加深。

但是,演算法是比較難學的,學習它需要智商。 同樣一個問題,他的演算法耗時 10ms,你的要 100ms,其中的效能差異是巨大的。解演算法題的確是區分人類智商的比較好的方式,這也是為什麼許多公司用演算法面試來找到智商比較高的程式設計師。

陣列、連結串列、雜湊表、二叉樹、排序演算法等一些基礎知識,對大多數人來說是沒什麼問題的。但是其他動態規劃、字元匹配等問題就非常複雜,都是傷腦筋等問題,沒有解答思路是令人痛苦的。

雖然很多時候,在工作中根本用不到演算法,這不代表演算法無用。真正的技術突破或者效能優化可能就在於演算法,演算法是貫穿底層系統和頂層業務的理論,不管用 Java 還是 C 語言,都離不開演算法的編織。

學習演算法,不僅要解決當前問題,還要學會背後的套路,這樣對於搞定其他問題是有幫助的。比如涉及陣列移動和替換的一些問題都可以用快慢指標解決。

目前,我已經開始做 LeetCode 上的題目了,每日一道演算法題,先從簡單開始,題目的解答放在 GitHub 上——LeetCodePractice。前幾年看到 LeetCode 上的英文題目令人發怵,幸運的是,LeetCode 中國(力扣)上線了,這是一個非常優秀的社群,我們應該利用好它。

萬丈高樓平地起,勿在浮沙築高臺。

共勉。

相關文章