广元市住房和城乡建设局网站,如何设立外贸网站,中国律师营销网,外链管理大家好#xff0c;我是方圆。最近花时间学了学算法#xff0c;应该算是我接触Java以来第一次真正的学习它#xff0c;这篇帖子我会说一些我对算法学习的理解#xff0c;当然这仅仅是浅浅的入算法的门#xff0c;如果想深挖或者是有基础的人想提升自己#xff0c;我觉得这…大家好我是方圆。最近花时间学了学算法应该算是我接触Java以来第一次真正的学习它这篇帖子我会说一些我对算法学习的理解当然这仅仅是浅浅的入算法的门如果想深挖或者是有基础的人想提升自己我觉得这篇文章不合适如果你是算法小白或者是大一、大二有充裕时间的同学它可能真的稍微有一点点帮助。
1. 交代背景
非科班转码近两年才开始学习算法之前一切的算法知识全部来自《算法图解》一本基础性的漫画算法小册和百来到LeetCode题目这也导致了我算法知识全是一块一块的完全没办法衔接起来面试题也仅仅只是对刷过或类似的题能解纯纯复刻高三“题海战术”。 2. 算法学习开始的契机
一次工作的间隙正得意于自己提交的代码如此“简洁”时便听见了“方圆你看看这个方法可以一次遍历完成但你做了两次遍历而且还不好读”
这番提醒对我来说是当头一棒心想“你这小欻欻敢对我的整洁代码有意见”便强装嘴硬咱俩考虑这个方法的角度不同吧啦吧啦解释一番…
但我回头还是把这个方法的执行逻辑改了这开始让我意识到我对算法很不敏感也从来不会在时间复杂度上去考虑问题从此便埋下了算法学习的种子。
而种子的开花结果是在某算法大佬直言不讳下催化促成的。一次有幸向大佬的算法开源仓库提交章节贡献本以为自己写的逻辑清晰简单易懂但是在大佬的严格审核下被批的体无完肤“你可能更适合写一些便基础的内容…”一下就让我不值几两的自尊心粉碎发誓不学好算法不罢休。
3. 学习路线
接下来是主要内容分算法和LeetCode两部分。知识的来源全部来自书没有视频我个人也不倾向选择视频学习我觉得书籍在很大程度上是知识最好的传播媒介。
算法
《算法第四版》: 思来想去我还是想把这本书放在最前面虽然它是一本不太好读的大部头翻译欠佳比如把指针/Java引用翻译成链接…但是如果你有耐心且时间充裕的话还是希望你能够选择去读经典的书籍。做一做它每个章节后边的习题你会在这本书上花很多很多时间我也相信你因此会有很大的收获。从我这两年陆续读技术书的体验来看还是推荐以经典为主素人/网红/大Tittle名人写的书优秀内容较少有发展粉丝经济的嫌疑。《Hello 算法》: 如果你刷过剑指Offer的话那你应该对它的作者比较眼熟。这是一本开源的算法入门电子书其中所有的内容我全部看过很用心也很有启发性但是它还没有完结不过因此的好处是你可以借此机会去仓库贡献内容。即使你读了上一本书这本书也必读而且我建议两本书一起读先读这本书中的内容再去《算法》中找相同的章节读做一做后边的题目这样能够降低一些《算法》晦涩的程度。 书籍链接: https://www.hello-algo.com《数据结构与算法之美》: 你说你完全读不进去大部头那行啊可以看看这本国人写得书比较好读而且它还结合了一些算法应用的实例不过一些延展的例子讲得不深让人觉得浅尝辄止不过用来入门完全够了总体还是推荐的。《算法图解》: 别读别读别读太基础所有的内容都能在上述书中找到且讲得更好。
LeetCode
《LabuLaDong的算法小抄》: 也是一本开源的免费电子书不过我觉得这本书太 “繁重” 了只关注它的第零章、动态规划和二叉树部分的讲解就好其他部分建议直接在刷题的时候看高赞题解。大家不要去买这本实体书电子版内容就很全了实体书很像是“XXXXXX”。 书籍链接: https://labuladong.github.io/algo/di-ling-zh-bfe1b/LeetCode高频题: 刷题一定要分类刷先刷链表、再刷二叉树、之后刷动态规划、回溯和递归类型的题其他的数据结构类、双指针类等其他类放在后面。我自己做了一个刷题的仓库是我刷过的一些经典题它不只是简单的分类在每个分类里我也做了一些细分和必要的思考点每道题都链接好了LeetCode题目能点过去直接刷比较方便。我觉得对算法入门来说应该是完全够了刷题过程重要的还是要做好总结因为题量越来越大不可能每一道题都刷到有了自己对题的理解和思考才是最重要的。 LeetCode仓库: https://github.com/FangYuan33/LeetCode 祝大家学得开心