给自己新的开始——如何学好算法和数据结构
2020.3.6
一直以来很害怕接触到这一块,但是越早准备以后找工作的时候就能多一些底气,毕竟只要下定决心开始,什么时候都不算晚。
这篇文章是听了一个比较系统性的关于学习的路线,特此记录。
大纲
- 有哪些需要学习的算法与数据结构
- 如何学好算法与数据结构-刷题的重要性
- 算法与数据结构在工作中的应用
- 总结-有哪些经典的解题模版
算法为什么离不开数据结构
- 算法是解决问题的一系列操作集合
- 数据结构能使得这些操作更加的高效
- 同样的算法我们可以选择不同的数据结构,会带来不同效率的算法
有哪些需要学习的算法与数据结构
- 国外主流IT企业面试:算法数据结构+系统设计面
- 国内主流IT企业面试:算法数据结构+系统设计面+操作系统+网络+数据库+…
- 面试中的算法和数据结构并不是很多,常见的有
- Array(如各种Subarray的问题)
- LinkedList(各种翻转操作链表的问题)
- Queue
- Stack
- Binary Tree
- ……
学习的广度和深度
- 广度和深度并重
- 先广度(系统化学习),了解数据结构直接的联系
- 后纵深,深入的挖掘每一种数据结构的应用
数据结构分类
- 线性数据结构1对1的关系
- 数组&链
- 栈和队列
- 树状数据结构 1对多的关系
- 图结构 多对多的数据结构
- 树是更简单的图,链表是更简单的树
了解数据结构的特性
1.数组Array
a.可随机访问,可以访问每一个位置A[i]
b.前缀和 Prefix Sum – SubArray问题的杀手锏
2.链表LinkedList
a.翻转列表的一系列问题,本质是是否了解Linkedlist
3.树结构Tree
a.Tree与Linkedlist的关系(链表本质上是一叉树)
b.Tree本质上是链表的变种
4.堆Heap
A.优先队列的一种,能够在logn时间复杂度取出一个集合的最小值或者最大值
刷题的重要性
- 学会分类和总结,按照专题,类别来刷题
- 看别人的代码,不同的算法和数据结构
- 做笔记