这样学算法,包会包懂so easy~

news/2024/7/2 23:35:24

640?wx_fmt=jpeg


整理 | Jane

出品 | AI科技大本营


面试前,大家都会开始刷各类网站,希望能在算法之道上有所进益,也期待有幸能在面试中碰上原题,而在那么多的网站中,LeetCode 一定是候选学习的网站之一。但是 LeetCode 网站上的题量和难度都是大家要面临的挑战。很多同学们刚开始的时候都非常迷茫,毫无头绪。还有一部分同学真的就是在刷题。


其实网上可以搜到很多“刷题笔记”、“刷 LeetCode 的正确姿势”等分享。但是,还是有一些算法题,文字仍无法帮助同学们 get 到正确的方法或解决问题的逻辑,此时又该怎么办?有什么好的解决方法呢?今天,营长要特别为大家介绍一个名为“LeetCodeAnimation”的开源项目。在这个项目中,文字解读并不是主要的,作者把一些 LeetCode 题目或算法原理用非常生动、形象的动画形式展现出来。


第一次看到这个项目的时候,营长的感受就是作者真的很用心,不仅要整理清晰自己的思路,同时制作的动画也要让学习者可以清晰、容易的学会。制作完成一个可以说非常费心耗神了,相信对大家的学习一定有所帮助,要分享给大家。


比如必会的排序算法系列之冒泡排序


640?wx_fmt=gif


还有脑洞大开的奇葩算法之猴子排序

     

640?wx_fmt=gif


十大排序算法总结:算法步骤+动图解读+算法代码,一应俱全,可以说非常足够了。                    

640?wx_fmt=png

640?wx_fmt=png


每天一算:29 道,还在持续更新中

     

640?wx_fmt=gif

每天一算之逆波兰表达式求值


640?wx_fmt=png


看到这里,大家是不是都很想跟着学习一下,也很好奇背后的作者是谁?营长就在这个周末和项目作者聊了一下这个项目,关于项目启动的初衷、面临的一些困难和未来的计划。下面,就为大家介绍一下这个项目的作者——程序员小吴。


AI科技大本营:可以先和大家介绍一下自己吗?


程序员小吴:我毕业于哈尔滨工业大学,目前致力于通过动画的形式演示数据结构与算法,Github 项目名字是:LeetcodeAnimation。


AI科技大本营:开始 LeetcodeAnimation 这个项目的初衷是什么?


程序员小吴:在刷 Leetcode 的过程中,遇到很多有意思和有难度的题目,有时候自己能做出来,有时候需要看别人的分析才能解开,但往往隔一段时间再去看原题的时候又是一头雾水。


这时,我在考虑有没有一种方法可以把抽象的算法具体化、生动化,加深或者加快解题的思路?然后就有了现在的 LeetcodeAnimation。


AI科技大本营:在这个项目中遇到了哪些困难?


程序员小吴:想起去年曾用自己熟悉的编程语言开源过一个关于排序动画的项目(最近发现被人偷源码上架 App Store),在 GitHub 上也获得了不少 star,效果不错。因为每次想起动画场景的时候就能知道排序的思路,进而白板编程写成相应的排序算法代码。于是,尝试着将解题的思路用动画的形式记录下来。


一开始尝试像之前一样用 OC 语言编写动画,但发现这样效率太低了,一个简单的题目动画编写需要耗费几个星期的时间。期间也尝试过JS编写动画,但效果也不理想。(PPT 做动画)卡在这个想法上一段时间了,期间尝试过很多别的方法,效果都不太理想,偶然间发现可以使用 PPT 做动画,只要你的想象力够丰富,只需要几分钟便能勾勒出思路动画;做 PPT 是个细致的活,前期花了很多时间摸索 PPT 功能,琢磨怎么把动画做的更好看、思路展现的更加流畅。


AI科技大本营:LeetcodeAnimation 的动画是如何构思的?(一个题目变成动画)


程序员小吴:做动画前肯定要对题目已经做出并且有自己的理解了,然后加上想象力。比如该题用到了链表的概念,那肯定动画就要有链表的形象;比如该题用到了滑动窗口的概念,那就需要用长方形来表示窗口。其他的一些细节调整比如动画时间的设置、动画出现与消失的方式,这些就需要自己耐心细致的一帧一帧的调了。


一道 Leetcode 上的原题从选题到解题,从思路分析到动画制作,还要基于自己的理解,把算法在脑海里转化成动画,再录制到文章编写,往往至少要两个小时,难一点的题目要更久。


AI科技大本营:近期 LeetcodeAnimation 这个项目上有什么新想法吗?


程序员小吴:很多读者肯定了这种模式,觉得这种动画的形式大大方便了对于Leetcode的理解,但也有好多人提出能不能从简单的数据结构开始,用动画的形式去解析一下,打好基础,更好的去理解算法。我觉得这个想法也很棒,所以近期开始更新数据结构知识点。


AI科技大本营:LeetcodeAnimation 后续有什么规划?


程序员小吴:现在规划周末的话多做几题,多做几道动画。或者找同伴一起维护。


【结语】目前 Github 项目上已经更新了三十多道题目和一些算法总结性内容,虽然这些题目和 LeetCode 的总题量还有一定差距,但是作者也表示“我会尽力将 LeetCode 上所有的题目都用动画的形式演示出来,计划用 3 到 4 年时间去完成它,期待与你见证这一天!”营长表示同样很期待,也希望大家都可以喜欢这个项目,给作者支持和鼓励。


迫不及待要戳的 Github 项目链接:

https://github.com/MisterBooo/LeetCodeAnimation/blob/master/Readme.md



本文为 AI科技大本营原创稿件,转载请联系微信1092722531。


【完】


推荐




640?wx_fmt=jpeg


推荐阅读:

  • 开源项目哪家强?Github年终各大排行榜超级盘点(内附开源项目学习资源)

  • @程序员,安全问题必须重视!

  • 公开课报名 | 基于自定义模板的OCR结果的结构化处理技术


  • 为什么公司宁愿花25K重新招人,也不愿花20K留住老员工?

  • Python 告诉你:熊市将去,牛市要来!

  • 65% 的程序员竟都是自学成才?

  • Python 爬取爱奇艺腾讯视频 250,000 条数据分析为什么李诞不值得了?


点击“阅读原文”,打开APP 阅读更顺畅。


http://lihuaxi.xjx100.cn/news/286933.html

相关文章

p6安装后怎么连接oracle的数据库,p6-oraclexe数据库连接不上处理方法内部版20151012.doc...

p6-oraclexe数据库连接不上处理方法内部版20151012.doc 问题P6出现无法连接数据库修改SYSTEM密码SQLCONN/ASSYSDBA已连接。SQLPASSWORDSYSTEM更改SYSTEM的口令新口令重新键入新口令口令已更改SQLALTERUSERSYSTEMIDENTIFIEDBYMANAGER用户已更改。修改P6ADMIN的密码CONNSYSASSYSD…

10种Git技巧,让你省时省力又省心!

图片来源:unsplash.com/sam_truong1. 从另一分支切换单个文件大家是否曾销毁文件只为能重新开始? 或需要在另一分支的某文件中进行更改?而git指令可以实现从另一分支切换文件。git checkout some-other-branch -- yarn.lock同时,也可以使用相…

启动mysqld报 mysql the server quit without updating pid file

查看mysql服务器的错误日志有一句: InnoDB: mmap(137363456 bytes) failed; errno 12 原来是内存不够用(需要131MB)呀,把my.cnf中的innodb_buffer_pool_size值修改成8M解决问题 这个弄好好,发现服务器上的wordpress任然报“数据库…

博弈论入门1

博弈论 1.是二人或多人在平等的对局中各自利用对方策略变换自己的对抗策略,达到取胜目标的理论。 2.博弈论是研究互动决策的理论。博弈可以分析自己与对手的利弊关系,从而确定自己在博弈中 3.的优势,因此有不少博弈理论,可以帮助对…

Oracle导入csv数据字符集,用SQLLDR把.CSV文件导入到数据库时,出现无法定位字符集句柄以用于字符集标识(0)...

LOAD.CTL文件内容:load datareplace into table js_clk_loadfields terminated by "," optionally enclosed by "(bh,mc,xhgg,dw,sl,qt1,qt2,scdj,qt3,qt4,qt5,scj)T--0001.CSV内容为:编号 材 料 名 称 规 格 型 号 单位 数量 …

上映 10 天,票房就突破 10 亿的《海王》真的有那么好看?

出品:CSDN(ID:CSDNnews)写在前面本文将主要通过Python加上一些数据分析,来证明《海王》好看。《海王》一部电影带你重温《驯龙高手》《变形金刚》《星球大战》《星河战队》《铁血战士》《安德的游戏》《异形》可能还借…

Python实现微信防撤回

微信(WeChat)是腾讯公司于2011年1月21日推出的一款社交软件,8年时间微信做到日活10亿,日消息量450亿。在此期间微信也推出了不少的功能如:“摇一摇”、“漂流瓶”、“朋友圈”、“附近的人”、“公众平台”、“小程序”…

shell 监控局域网的主机是否up(转)

#!/bin/bash for ((i30;i<60;i)) ;do ping -c 3 172.31.0.$i>/dev/null #ping -c 172.31.0.30 ~172.31.0.59 if [[ $? -eq 0 ]] #if up $?0 then echo "172.31.0.$i is alive" else echo "172.31.0.$i isnt…