不知不觉在 V2EX 待了两年多了,在这里看到了很多个创意与想法,自己也在这里收获了许多的认可,感谢 v 友。
12 月初在 github 上启动了一个叫做「 LeetcodeAnimation 」的项目,第一时间在这里宣传,靠 v 友们的第一波 star,冲上了 trending 榜,再次感谢:)
下面和大家聊聊关于项目启动的初衷、面临的一些困难和未来的计划吧。
在刷 Leetcode 的过程中,遇到很多有意思和有难度的题目,有时候自己能做出来,有时候需要看别人的分析才能解开,但往往隔一段时间再去看原题的时候又是一头雾水。
这时,我在考虑:有没有一种方法可以把抽象的算法具体化、生动化,加深或者加快解题的思路?
想起去年曾用自己熟悉的编程语言开源过一个关于排序动画的项目(最近发现被人偷源码上架 App Store),在 GitHub 上也获得了不少 star,效果不错:因为每次想起动画场景的时候就能知道排序的思路,进而白板编程写成相应的排序算法代码,因为这个能力,在不少的面试的算法环节能轻松应对。
项目 GitHub 地址: https://github.com/MisterBooo/Play-With-Sort-OC
于是,尝试着将解题的思路用动画的形式记录下来。
一开始尝试像之前一样用 OC 语言编写动画,但发现这样效率太低了,一个简单的题目动画编写需要耗费几个星期的时间。
期间也学习过小程序,打算使用小程序来显示,可能功夫不到家,技巧不太熟练,效果也不理想。
百般尝试之后无果,于是这个想法停止了很长一段时间,期间自己依旧笨拙的刷着 LeetCode。
直到一个偶然的机会,自己在使用 PPT 的时候发现 PPT 的动画很丰富,使用技巧也不是很高深:只要你的想象力够丰富,只需要几分钟便能勾勒出思路动画。
于是,经过一小段时间的学习,加上自己的想象力,马上做出了第一个动画。
可以明显的发现,这个动画的交互与形状的设置并不是很好,不过,我认识到了:用 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,与君共勉:)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.