zoukankan      html  css  js  c++  java
  • 给自己新的开始——如何学好算法和数据结构

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

    刷题的重要性

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

     

  • 相关阅读:
    线程安全的简单理解
    单链表 之 判断两链表是否交叉
    React组件间的通信
    input type=file美化
    Array.prototype.slice.call(arguments)
    ES5 数组方法every和some
    nodejs学习之表单提交(1)
    ES5 数组方法reduce
    ES5 数组方法map
    ES5 数组方法forEach
  • 原文地址:https://www.cnblogs.com/yzh1008/p/12430211.html
Copyright © 2011-2022 走看看