总览

数据结构

  • 一维数据结构
    • 基础:数组 array(string)、链表 linked list
    • 高级:栈 stack、队列queue、双端队列 deque、集合set、映射 map(hash or map)
  • 二维数据结构
    • 基础:树 tree、图 graph
    • 高级:二叉搜索树 binary search tree(red-black tree、AVL)、堆 heap、并查集 disjoint set、字典树 Trie
  • 特殊数据结构

    • 位运算 Bitwise、布隆过滤器 BloomFilter
    • LRU Cache 0、预习:环境配置、编码技巧、复杂度分析 - 图1

      算法(找重复单元)

  • if-else

  • for loop、 while loop
  • 递归

找重复单元 ===> 泛化

  • 搜索: 深度优先搜索、广度优先搜索、A*
  • 动态规划
  • 二分查找(有序数组查找元素)
  • 贪心算法
  • 数学、几何操作

image.png

刻意练习

  • 刻意练习-过遍数(五毒神掌)
  • 练习缺陷、弱点的地方
  • 不爽、不舒服、枯燥

反馈

  • 即时反馈
  • 主动型反馈(自己去找)
    • 高手的代码(Github、LeetCode etc)
    • 第一视角直播
  • 被动式反馈(高手指导)

刷题技巧

  • 切题四件套:
    • 和面试官反复沟通、确认理解题目
    • Possible solutions:
      • compare 把所有可能的解决方法过一边,对比时间/空间复杂度
      • optimal 加强
    • Coding
    • Test Case
  • 五毒神掌
  1. 第一遍
    • 5分钟:读题+思考
    • 直接看解法:注意:多解法,比较解法优劣
    • 背诵和默写好解法
  2. 第二遍(马上)
    • 马上自己写
    • 多种解法比较、体会-> 优化
  3. 第三遍(过了24小时之后, 忘记的专项练习)
  4. 第四遍(过了一周之后,忘记的专项练习)
  5. 第五遍(面试提前一周)

    环境配置、编码技巧

    Google

    Iterm

    VScode

    LeetCode

    中文站:https://leetcode-cn.com/
    国际站:https://leetcode.com/

五毒神掌(五遍刷题法)

切题四件套:确认所有的问题和疑惑、所有方法/比较时间复杂度、找出最优、写

指法练习 Top Tip for IDE

自顶向下的编码方式

高层次(主干逻辑)

复杂度分析

时间复杂度

分类

0、预习:环境配置、编码技巧、复杂度分析 - 图3

主定理 Master Theorem

0、预习:环境配置、编码技巧、复杂度分析 - 图4

空间复杂度

  1. 数组的长度
  2. 递归的深度