《labuladong的算法笔记》专攻算法刷题,训练算法思维,应对算法笔试,注重用套路和框架思维解决问题,以不变应万变。
第1章列举了几个最常见的算法类型及对应的解题框架思路,包括双指针、滑动窗口等算法技巧,并把动态规划、回溯算法、广度优先搜索等技巧的核心抽象为二叉树的两种问题形式。
第2章介绍了基础数据结构相关的算法,包括数组链表的常见技巧汇总和数据结构设计的经典例题。
第3章从二叉树的几种解题思路开始,尝试从二叉树的视角理解快速排序和归并排序,进一步讲解回溯、DFS、BFS等暴力搜索算法。
第4章具体介绍了动态规划相关的技巧,例如如何确定base case,如何写状态转移方程,如何进行状态压缩等技巧,并用动态规划的通用思路框架解决了十几道经典的动态规划问题。
第5章讲解了一些高频面试/笔试题目,每道题目可能会结合之前章节讲过的多种算法思路,也可能有多种解法。读完这一章,你就可以独自遨游题海啦!
GitHub高赞硬核算法教程,Offer收割机带你搞定算法,挑战大厂Offer,力扣正式授权,官方练习平台,边看边练
labuladong,有多年的刷题经验,希望用通俗的语言帮助广大互联网从业者少走弯路,快速从根本上攻克算法难关,为职业道路的发展赋能。
数据结构和算法在计算机知识体系中有着举足轻重的作用,这块知识也有非常经典的教材供我们学习。但是,我们刷的算法题往往会在经典的算法思想之上套层皮,所以很容易让人产生这种感觉:我以前的数据结构和算法学得挺好的,为什么这些算法题我完全没思路呢?
面对这种疑惑,可能就会有人摆出好几本算法相关的大部头,建议你去进修。
有些书确实很经典,但我觉得咱们应该搞清楚自己的目的是什么。如果你是学生,对算法有浓厚的兴趣,甚至说以后准备搞这方面的研究,那我觉得你可以去啃一啃大部头;但事实是,大部分人学习算法是为了应对考试,这种情况去啃大部头的性价比就比较低了,更高效的方法是直接刷题。
但是,刷题也是有技巧的,刷题平台动辄几千道题,难道你全刷完吗?最高效的刷题方式是边刷边归纳总结,抽象出每种题型的套路框架,以不变应万变。我个人还是挺喜欢刷题的,经过长时间的积累总结,沉淀出了这本书,希望能给你带来思路上的启发和指导。
解算法题的核心只有一个,那就是穷举。不同的算法,无非就是聪明的穷举和笨一点儿的穷举而已,真的没什么高深莫测的,读完本书,你就会有深刻的体会。
本书特色
本书的最大功效是手把手带你刷算法题,不过分拘泥于具体的细节,而是为你指明各种算法题型的共通之处,并总结出套路和框架,助你快速掌握算法思维,应对算法面试。
读者对象
这不是一本数据结构和算法的入门书,而是一本刷算法题的参考书。
本书的目的是手把手带你刷题,每看完一节内容,都可以去刷几道题,知其然,也知其所以然,即学即用,相信本书会让你一读就停不下来。
配套插件
很多读过我的微信公众号文章的读者向我反映,跟着文章可以理解算法技巧,一次解决好几道题目,但是自己去做题时就很难把这些技巧运用出来。这个问题也很好解释,因为你亲自下场练习的题目还是太少呀!算法框架并没有真正融合成你的知识体系的一部分。解决方法也很简单,多练。
为了帮助大家更好地练习本书讲解的算法技巧,我开发了一套刷题插件。插件手把手带你实践、运用本书总结的算法框架,可以解决力扣上近700 道题目。插件支持在浏览器、Visual Studio Code 和Jetbrain IDE 几个平台安装使用。