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