01 - 数据结构与算法总览

数据结构与算法总览

学习方法

  • Chunk it up 切碎知识点
  • Deliberate Practice 刻意练习
  • Feedback 反馈

数据结构

一维数据结构

  • 基础:数组array(String),链表Linked list

  • 高级:栈Stack,队列queue,双端队列deque,集合Set,映射Map(hash or map),etc

二维数据结构

  • 基础:树tree,图graph

  • 高级:二叉搜索树binary search tree(根节点大于它的左子树且小于它的右子树的全部节点)(red-black tree.AVL),堆heap,并查集disjoint set,字典树trie,etc

特殊数据结构

  • 位运算Bitwish,布隆过滤器BloonFitter,缓存LRU Cache

算法

三点基本
是所有算法和数据结构的基石,目前我们所用的算法并不包含任何智能成分,化繁为简后,它的根本就是 找到它的重复单元,基于重复单元,可泛化为高级数据结构,,而高级的算法数据结构到最后都会转化为跳转/循环/递归

  • 跳转

    branch------if-else,switch
  • 循环

    lteration------for-loop,while-loop,which
  • 递归

    Recursion------Divide&conquer,Backtrace
    五点高级
  • 搜索Search:

    深度优先搜索Depth first search,广度优先搜索Breadth first search,启发式搜索A*,etc
  • 动态规则Dynamic Programming

  • 贪心算法Greedy,排序

  • 数学Math,几何Geometry

基本功的训练

基础动作的分解训练和反复练习

  • 刻意练习 及时反馈 刷题技巧

-##切题——四步系统的思考方式

  • Clarification,Posssible solutions,Coding,Test cases

-##刷题——五遍刷题法

  • 1 读题+思考(5~15min)——看解法(/自己做)比较多种解法的优劣——背诵默写好的解法
  • 2 自己写——LeetCode提交——反复修改debug,尝试多重解法——进行优化
  • 3 过24h后及时重复做题,不同解法的熟练程度,专项练习
  • 4 一周后反复回来刷相同的题
  • 5 面试前一周恢复性训练
posted @ 2020-08-30 00:14  bm小明  阅读(118)  评论(0编辑  收藏  举报