数据结构与算法学习总览
01 | 数据结构
1、一维
1)基础:数组 array,链表 linked list
2)高级:栈 stack,队列 queue,双端队列 dequeue,集合 set,映射 map(hash or map), etc
2、二维
1)基础:树 Tree,图 Graph
2)高级:二叉搜索树 binary search tree (red-black tree,AVL),堆 heap,并查集 disjoint set,字典树 Trie,etc
3、特殊
1)位运算 Bitwise,布隆过滤器 BloomFilter
2)LRU Cache
02 | 算法
1)if-else, switch -> branch
2)for, while loop -> Iteration
3)递归 Recurison:深度优先搜索 Depth first serarch, 广度优先搜索 breadth first search,启发式搜索 A*,etc
4)动态规划 Dynamic Programming
5)二分查找 Binary Search
6)贪心 Greedy
7)数学 Math,几何 Geometry
03 | 精通一个领域
1、切碎知识点 Chunk it up
1)基本功是区别业余和职业选手的根本
2)基础动作的分解训练和反复练习 ->最大的误区:认为只是练一次就够了
2、刻意练习 Deliberate Practicing
1)刻意练习—过遍数(五毒神掌)
2)练习缺陷、弱点的地方
3)克服 不舒服、不爽、枯燥
3、反馈 Feedback
1)及时反馈
2)主动型反馈(自己找):
a. 高手代码(GitHub,LeetCode,etc.)
b. 第一视角直播
3)被动反馈(高手给你指点):
a. code review
b. 教练看你打,给你反馈
04 | 切题四件套
1、Clarification
2、Possible solutions
1)compare(time/space)
2)optimal(加强)
3、 Coding(多写)
4、Test cases
05 | 刷题五遍法(五毒神掌)
1、刷题第一遍
1)5分钟:读题 + 思考
2)直接看解法:注意!多解法,比较解法优劣
3)背诵、默写好的解法
2、刷题第二遍
1)马上自己写 -> LeetCode 提交
2)多种解法比较、体会 -> 优化!(减少算法的执行时间)
3、刷题第三遍
1)过了一天后,在重复做题
4、刷题第四遍
1)过了一周:反复回来练习相同题目
5、刷题第五遍
1)面试前一周回复性训练
06 | 小结
1、 职业训练:拆分知识点、刻意练习、反馈
2、 五步刷题法(五毒神掌)
3、 做算法题的最大误区:只做一遍
07 | 思维导图
1、数据结构与算法学习总览思维导图
参考文献:
[1] 覃超. 算法训练营[M]. 极客时间, 2019.