导论-数据结构和算法学习
01 | 学习的目的
1、导读
1)想要通关大厂面试,千万别让数据结构和算法拖了后腿
2)学任何知识都是为了“用”的,是为了解决实际工作中的问题
3)对各种框架、中间件和底层系统,不需要自己实现,并不代表什么都不需要了解
4)在这些基础框架中,一般都揉和了很多基础数据结构和算法的设计思想
5)掌握数据结构和算法,不管对于阅读框架源码,还是理解其背后的设计思想,都是非常有用的
6)掌握了数据结构与算法,看待问题的深度,解决问题的角度就会完全不一样
2、好处
1)直接好处是能够有写出性能更优的代码
2)算法,是一种解决问题的思路和方法,有机会应用到生活和事业的其他方面。
3)长期来看,大脑思考能力是个人最重要的核心竞争力,而算法是为数不多的能够有效训练大脑思考能力的途径之一
02 | 数据结构和算法概念
1)数据结构和算法不易学懂的原因是没有找到好的学习方法,没有抓住学习的重点
2)广义层面:数据结构就是指一组数据的存储结构。算法就是操作数据的一组方法。
3)狭义层面:指某些著名的数据结构和算法,比如队列、栈、堆、二分查找、动态规划等
4)二者的关系:数据结构和算法是相辅相成的。数据结构是为算法服务的,算法要作用在特定的数据结构之上
03 | 学习重点
1、导读
1)想要学习数据结构与算法,首先要掌握一个数据结构与算法中最重要的概念——复杂度分析
2)学习要学会找重点,如果不分重点地学习,眉毛胡子一把抓,学起来肯定会比较吃力。
3)总结了 20 个最常用的、最基础数据结构与算法,不管是应付面试还是工作需要,只要集中精力逐一攻克这 20 个知识点就足够了
4)学习数据结构和算法不要死记硬背,要学习它的“来历”“自身的特点”“适合解决的问题”以及“实际的应用场景”
2、10个数据结构
1)数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树
3、10个算法
1)递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法
04 | 学习技巧
1、边学边练,适度刷题
1)可以“适度”刷题,但一定不要浪费太多时间在刷题上。我们学习的目的还是掌握,然后应用。
2、多问、多思考、多互动
1)学习最好的方法是,找到几个人一起学习,一块儿讨论切磋,有问题及时寻求老师答疑
3、打怪升级学习法
1)学习的过程中,我们碰到最大的问题就是,坚持不下来
2)我们在枯燥的学习过程中,也可以给自己设立一个切实可行的目标:总结课程内容写博客;练习课程代码,提交github
4、知识需要沉淀,不要想试图一下子掌握所有
1)在学习的过程中,一定会碰到“拦路虎”。如果哪个知识点没有怎么学懂,不要着急,这是正常的
2)不可能学习一遍就能掌握所有知识,学习知识的过程是反复迭代、不断沉淀的过程
3)遇到“拦路虎”,可以先沉淀一下,过几天在重新学习一遍。
05 | 小结
1、学习重点
1)复杂度分析,10 个数据结构和 10 个算法
2)只要掌握这些内容,应付日常的面试、工作,基本不会有问题
2、学习技巧
1)边学边练、多问、多思考
2)两个通用的学习方法:打怪升级法和沉淀法
06 | 思维导图
1、导论-数据结构和算法学习思维导图
参考文献:
[1] 王争. 数据结构和算法之美[M]. 极客时间, 2018.