算法与数据结构 - 总览
        
 # 1. 数据结构
一维
- 基础:数组 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
 
特殊
- 位运算 Bitwise,布隆过滤器 BloomFilter
 - LRU Cache
 
# 2. 算法
基础
- 条件判断:if-else, switch -> branch
 - 迭代循环:for, while loop -> iteration
 - 递归:Recursion(Divide & Conquer, Backtrace)
 
高级
- 搜索 Search:深度优先搜索 Depth first search,广度优先搜索 Breadth first search,A*,etc
 - 动态规划 Dynamic Programming
 - 二分查找 Binary Search
 - 贪心 Greedy
 - 数学 Math,几何 Geometry
 
# 3. 方法论
职业训练
- 拆分知识点
 - 刻意练习
 - 反馈
 
切题四件套
- Clarification 明确题目
 - Possible solutions 寻求多种解法,找出最优解
- compare(time/space)比较
 - optimal 优化
 
 - Coding 刻意练习
 - Test cases 测试用例,有始有终
 
五毒神掌
第一遍
- 5分钟:读题 + 思考
 - 直接看解法:注意!多解法,比较解法优劣
 - 背诵、默写好的解法
 
第二遍
- 马上自己写 -> LeetCode提交
 - 多种解法比较、体会 -> 优化!
 
第三遍
- 过一天后,再重复做题
 - 不同解法的熟练程度 -> 专项练习
 
第四遍
- 过了一周,反复回来练习相同题目
 
第五遍
- 面试前一周恢复性训练
 
第三遍的时候就可以看一看leetcode国际站的Discuss中Most Vote前三回答,学习先进思路,会有很大帮助
# 4. 时间和空间复杂性
时间复杂度: Big O notation
- O(1): Constant Complexity 常数
 - O(log n): Logarithmic Complexity 对数
 - O(n): Linear Complexity 线性
 - O(n^2): N square Complexity 平方
 - O(n^3): N square Complexity 立方
 - O(2^n): Exponential Growth 指数
 - O(n!): Factorial 阶乘
 
注意: 只看最高复杂度的运算
复杂度分析方式:Master Theorem 主定理
# 5. 解决思想
核心思想: 升维 和 空间换时间
解题思路
- 最近子问题
 
上次更新: 2021/03/25, 04:03:00