给自己新的开始——如何学好算法和数据结构

2020.3.6

一直以来很害怕接触到这一块,但是越早准备以后找工作的时候就能多一些底气,毕竟只要下定决心开始,什么时候都不算晚。

这篇文章是听了一个比较系统性的关于学习的路线,特此记录。

大纲

  • 有哪些需要学习的算法与数据结构
  • 如何学好算法与数据结构-刷题的重要性
  • 算法与数据结构在工作中的应用
  • 总结-有哪些经典的解题模版

算法为什么离不开数据结构

  • 算法是解决问题的一系列操作集合
  • 数据结构能使得这些操作更加的高效
  • 同样的算法我们可以选择不同的数据结构,会带来不同效率的算法

有哪些需要学习的算法与数据结构

  • 国外主流IT企业面试:算法数据结构+系统设计面
  • 国内主流IT企业面试:算法数据结构+系统设计面+操作系统+网络+数据库+...
  • 面试中的算法和数据结构并不是很多,常见的有
  1. Array(如各种Subarray的问题)
  2. LinkedList(各种翻转操作链表的问题)
  3. Queue
  4. Stack
  5. Binary Tree
  6. ......

学习的广度和深度

  1. 广度和深度并重
  2. 先广度(系统化学习),了解数据结构直接的联系
  3. 后纵深,深入的挖掘每一种数据结构的应用

数据结构分类

  • 线性数据结构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时间复杂度取出一个集合的最小值或者最大值

刷题的重要性

  • 学会分类和总结,按照专题,类别来刷题
  • 看别人的代码,不同的算法和数据结构
  • 做笔记

 

相关推荐