麵試算法題又沒過?學習算法題太花時間?不是你的問題!在這之前沒有一種算法學習方式能如此簡單高效。 僅需三步,成為算法大神: 第一步,讀題 第二步,播放動畫,參考字幕,理解思路和代碼 第三步,閱讀解析,歸納總結 為什麽會做一款算法動畫圖解App? 和很多程序員一樣,每次換工作前都要準備大量時間刷算法。很菜,刷題過程中都要先看題解。在網上也看了很多大佬的題解,特別喜歡看有動圖或者示意圖的算法解析,比看文字快。在這過程中也發現了幾個問題,比如:動圖是沒有交互的,不能暫停;數據是死的不能換;手機上學習不太方便等。 一開始看到過一些不錯的動畫,幾次都有很大的衝動想在App中用原生代碼實現,這次終於下了決心,一口氣做了70個動畫。 我理解這款App的定位是一個工具,可以幫助我們快速理解算法思路和代碼,幫助記憶,提高學習效率。但在這裏不能提交,不能執行代碼,代碼還是要在電腦上敲才更有感覺。 為什麽沒有按照leetcode編號順序排列? 目前給算法題做了分類,分為三大塊: - 鏈表,字符串,數組,二叉樹; - 回溯,貪心,動態規劃,分治; - 排序單獨做分類。 每個分類下,按難度分為簡單,中等和困難。 先把數據結構和算法分開歸類,按知識點學習,比如可以集中時間學習二叉樹結構或者動態規劃算法,這樣集中飽和訓練有助於提高學習效率。數據結構在前,算法在後,也是按我們學習理論知識的順序安排的。 算法方麵,目前安排了回溯,貪心,動態規劃,分治四種。 個人多年前學習數據結構和算法最早接觸的算法就是各種排序,當時覺得排序太難了,印象非常深刻,所以為初學者單獨做了一個排序分類。 動畫和代碼如何結合等交互問題的思考 - 自己學習算法過程中經常理解了思路,但是代碼卻看不懂,而且很多文字講解中的代碼沒有注釋,看到這種就頭很大。所以,思考App交互的時候特別設計了代碼高亮功能,這意味著每一行的代碼會跟隨動畫進度高亮。這樣動畫在執行,代碼在高亮,看著也很酷。 - 動畫雖然容易理解,但還是需要有一些簡短的講解,所以在動畫下方設計了“字幕”功能。每次執行到對應步驟,對應的講解就會展示。 - 動畫的播放和重置,每道算法頁麵都有播放功能,那測試用例如何準備呢?簡化測試用例概念,設計了“重置”按鈕,也就是說測試用例是隨機的,當你想換一套數據,點一下重置就可以了。