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

Posted yzh1008

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给自己新的开始——如何学好算法和数据结构相关的知识,希望对你有一定的参考价值。

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时间复杂度取出一个集合的最小值或者最大值

刷题的重要性

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

 

以上是关于给自己新的开始——如何学好算法和数据结构的主要内容,如果未能解决你的问题,请参考以下文章

如何学好算法和数据结构之我见——51CTO名家访谈实录

程序猿的内功修炼 学好算法与数据结构

数据分析师之如何学好Python

数据结构和算法的概述

学好数据结构和算法 —— 复杂度分析

对编译原理的认识