你們好,我是程序員小吳。12月初我在GitHub上上傳了一個倉庫,到如今爲止獲取了 6300 star,下面和你們聊聊關於項目啓動的初衷、面臨的一些困難和將來的計劃。git
在刷Leetcode的過程當中,遇到不少有意思和有難度的題目,有時候本身能作出來,有時候須要看別人的分析才能解開,但每每隔一段時間再去看原題的時候又是一頭霧水。程序員
這時,我在考慮:有沒有一種方法能夠把抽象的算法具體化、生動化,加深或者加快解題的思路?github
想起去年曾用本身熟悉的編程語言開源過一個關於排序動畫的項目(最近發現被人偷源碼上架App Store),在GitHub上也得到了很多star,效果不錯:由於每次想起動畫場景的時候就能知道排序的思路,進而白板編程寫成相應的排序算法代碼,由於這個能力,在很多的面試的算法環節能輕鬆應對。面試
項目GitHub地址:github.com/MisterBooo/…算法
因而,嘗試着將解題的思路用動畫的形式記錄下來。編程
一開始嘗試像以前同樣用OC語言編寫動畫,但發現這樣效率過低了,一個簡單的題目動畫編寫須要耗費幾個星期的時間。小程序
期間也學習太小程序,打算使用小程序來顯示,可能功夫不到家,技巧不太熟練,效果也不理想。數據結構
百般嘗試以後無果,因而這個想法中止了很長一段時間,期間本身依舊笨拙的刷着 LeetCode 。編程語言
直到一個偶然的機會,本身在使用PPT的時候發現PPT的動畫很豐富,使用技巧也不是很高深:只要你的想象力夠豐富,只須要幾分鐘便能勾勒出思路動畫。post
因而,通過一小段時間的學習,加上本身的想象力,立刻作出了第一個動畫。
能夠明顯的發現,這個動畫的交互與形狀的設置並非很好,不過,我認識到了:用PPT動畫來演示LeetCode解題思路的確行得通!
固然,作PPT是個細緻的活,因而花了一些時間摸索PPT功能,琢磨怎麼把動畫作的更好看、思路展示的更加流暢。
基本上一道LeetCode上的原題從選題到文章生成的步驟是這樣的:
從基本熟悉知識點(圖、樹、堆、棧、鏈表、哈希表、記憶搜索、動態規劃、指針法、並查集等)中每一個知識點挑選出幾道經典的題目;
先本身審題、作題,而後查看網上有沒有思路更加清晰的解題方式;
加上想象力。
好比該題用到了鏈表的概念,那確定動畫就要有鏈表的形象;
好比該題用到了滑動窗口的概念,那就須要用長方形來表示窗口。
好比該題用到了二叉樹的概念,那麼就須要構造二叉樹的圖形。
其餘的一些細節調整好比動畫時間的設置、動畫出現與消失的方式,這些就須要本身耐心細緻的一幀一幀的調了。
不少時候,一道題目的解題只花費了幾分鐘,但作出動畫來卻要劃分一到兩個小時不等。
本身是一個在職程序員,工做也比較飽和,動畫的製做只能安排在夜深人靜的時候,在十一月份的時候常常忙活着作動畫作到凌晨一兩點。
這個過程痛快卻快樂着,畢竟,這是作本身喜歡作的事情:)
12月初,將項目放到了GitHub上面去,短短兩天登上了trending版第一的位置。
到目前位置,已經有超過 6300 的star。
正如我在 「LeetcodeAnimation」上寫的:我會盡力將LeetCode上全部的題目都用動畫的形式演示出來,計劃用3到4年時間去完成它,期待與你見證這一天!
因此,基本上我一到兩天都會製做一道題目的動畫,狀態好的週末,一天能作三四題:)
期間獲得了不少讀者的承認,以爲這種動畫的形式大大方便了對於Leetcode的理解。
與此同時,有不少小萌新們以爲能不能從簡單的數據結構開始,一樣用動畫的形式去解析一下。
通過慎重考慮,期間與「掘金」、「小專欄」等大佬們討論以後,以爲「用動畫呈現數據結構與算法」這個想法很棒!
因而,最近開始中止更新「LeetcodeAnimation」,轉爲從簡單的數據結構開始進行動畫製做。
但不用擔憂「LeetcodeAnimation」會不會所以「太監」,更新完數據結構與算法章節後,立馬恢復更新「LeetcodeAnimation」,保守估計 2019 年會至少更新 130 道題目,敬請期待:)
經過「LeetcodeAnimation」這個項目,認識了不少的算法大佬,有慕課網最受歡迎的 波波老師(liuyubobobo),有大二就開始研究深度學習的學霸等。在與他們溝通交流的過程當中,愈來愈體會到數據結構與算法的魅力,也愈來愈用動力將本身的公衆號更新下去:)
明年的事情挺充實的:
2018,say hi say goodbye!
2019,與君共勉:)